gson用法例子和Parcelable的用法例子
来源:互联网 发布:android 多个 数据库 编辑:程序博客网 时间:2024/06/06 11:22
最近碰到了解析json对象中的key是中文的json数据,学了下gson的用法。
gson包2.3.1版下载地址:http://download.csdn.net/detail/u012975705/9142787
源码
Info类
package com.practice.noyet.gsontest;import android.os.Parcel;import android.os.Parcelable;import com.google.gson.annotations.SerializedName;import java.util.List;/** * Created by noyet on 2015/9/27. */public class Info implements Parcelable { @SerializedName("Data") private List<CompanyInfo> list; public Info() { } private Info(Parcel parcel) { parcel.readTypedList(list, CompanyInfo.CREATOR); } @Override public String toString() { return "Info{" + "list=" + list + '}'; } public List<CompanyInfo> getList() { return list; } public void setList(List<CompanyInfo> list) { this.list = list; } @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel parcel, int i) { parcel.writeTypedList(list); } public final static Creator<Info> CREATOR = new Creator<Info>() { @Override public Info createFromParcel(Parcel parcel) { return new Info(parcel); } @Override public Info[] newArray(int i) { return new Info[i]; } };}
CompanyInfo类
package com.practice.noyet.gsontest;import android.os.Parcel;import android.os.Parcelable;import com.google.gson.annotations.SerializedName;/** * Created by noyet on 2015/9/27. */public class CompanyInfo implements Parcelable { //名字 private String CompanyName; //ID private int CompanyId; //花费 private String CostTitle; //年 private int Year; //月 private int Month; @SerializedName("CoseItem") private CoseItemEntity coseItemEntity; public CompanyInfo() { } private CompanyInfo(Parcel parcel) { CompanyName = parcel.readString(); CompanyId = parcel.readInt(); CostTitle = parcel.readString(); Year = parcel.readInt(); Month = parcel.readInt(); coseItemEntity = parcel.readParcelable(CoseItemEntity.class.getClassLoader()); } @Override public String toString() { return "CompanyInfo{" + "CompanyName='" + CompanyName + '\'' + ", CompanyId=" + CompanyId + ", CostTitle='" + CostTitle + '\'' + ", Year=" + Year + ", Month=" + Month + ", list=" + coseItemEntity + '}'; } public String getCompanyName() { return CompanyName; } public void setCompanyName(String companyName) { CompanyName = companyName; } public int getCompanyId() { return CompanyId; } public void setCompanyId(int companyId) { CompanyId = companyId; } public String getCostTitle() { return CostTitle; } public void setCostTitle(String costTitle) { CostTitle = costTitle; } public int getYear() { return Year; } public void setYear(int year) { Year = year; } public int getMonth() { return Month; } public void setMonth(int month) { Month = month; } public CoseItemEntity getCoseItemEntity() { return coseItemEntity; } public void setCoseItemEntity(CoseItemEntity coseItemEntity) { this.coseItemEntity = coseItemEntity; } @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel parcel, int i) { parcel.writeString(CompanyName); parcel.writeInt(CompanyId); parcel.writeString(CostTitle); parcel.writeInt(Year); parcel.writeInt(Month); parcel.writeParcelable(coseItemEntity, i); } public final static Creator<CompanyInfo> CREATOR = new Creator<CompanyInfo>() { @Override public CompanyInfo createFromParcel(Parcel parcel) { return new CompanyInfo(parcel); } @Override public CompanyInfo[] newArray(int i) { return new CompanyInfo[i]; } };}
CoseItemEntity类
package com.practice.noyet.gsontest;import android.os.Parcel;import android.os.Parcelable;import com.google.gson.annotations.SerializedName;/** * Created by noyet on 2015/9/25. */public class CoseItemEntity implements Parcelable { @SerializedName("工资总额") private String totalSalary; @SerializedName("当月工资总额") private String monthSalary; @SerializedName("管理费用及三费计提合计") private String manageSalary; @SerializedName("当月社会保险费用合计") private String insureSalary; @SerializedName("当月社会保险费用个人部分") private String insurePersonalSalary; @SerializedName("当月社会保险费用单位部分") private String insureUnitSalary; @SerializedName("当月其他商业保险费用") private String insureBusinessSalary; @SerializedName("公积金合计") private String funds; @SerializedName("公积金个人部分") private String personalFunds; @SerializedName("公积金单位部分") private String unitFunds; @SerializedName("其他") private String others; @SerializedName("代缴税金") private String taxes; @SerializedName("本月应付") private String monthPay; @SerializedName("开票金额") private String billingAmount; @Override public String toString() { return "CoseItemEntity{" + "totalSalary='" + totalSalary + '\'' + ", monthSalary='" + monthSalary + '\'' + ", manageSalary='" + manageSalary + '\'' + ", insureSalary='" + insureSalary + '\'' + ", insurePersonalSalary='" + insurePersonalSalary + '\'' + ", insureUnitSalary='" + insureUnitSalary + '\'' + ", insureBusinessSalary='" + insureBusinessSalary + '\'' + ", funds='" + funds + '\'' + ", personalFunds='" + personalFunds + '\'' + ", unitFunds='" + unitFunds + '\'' + ", others='" + others + '\'' + ", taxes='" + taxes + '\'' + ", monthPay='" + monthPay + '\'' + ", billingAmount='" + billingAmount + '\'' + '}'; } public String getTotalSalary() { return totalSalary; } public void setTotalSalary(String totalSalary) { this.totalSalary = totalSalary; } public String getMonthSalary() { return monthSalary; } public void setMonthSalary(String monthSalary) { this.monthSalary = monthSalary; } public String getManageSalary() { return manageSalary; } public void setManageSalary(String manageSalary) { this.manageSalary = manageSalary; } public String getInsureSalary() { return insureSalary; } public void setInsureSalary(String insureSalary) { this.insureSalary = insureSalary; } public String getInsurePersonalSalary() { return insurePersonalSalary; } public void setInsurePersonalSalary(String insurePersonalSalary) { this.insurePersonalSalary = insurePersonalSalary; } public String getInsureUnitSalary() { return insureUnitSalary; } public void setInsureUnitSalary(String insureUnitSalary) { this.insureUnitSalary = insureUnitSalary; } public String getInsureBusinessSalary() { return insureBusinessSalary; } public void setInsureBusinessSalary(String insureBusinessSalary) { this.insureBusinessSalary = insureBusinessSalary; } public String getFunds() { return funds; } public void setFunds(String funds) { this.funds = funds; } public String getPersonalFunds() { return personalFunds; } public void setPersonalFunds(String personalFunds) { this.personalFunds = personalFunds; } public String getUnitFunds() { return unitFunds; } public void setUnitFunds(String unitFunds) { this.unitFunds = unitFunds; } public String getOthers() { return others; } public void setOthers(String others) { this.others = others; } public String getTaxes() { return taxes; } public void setTaxes(String taxes) { this.taxes = taxes; } public String getMonthPay() { return monthPay; } public void setMonthPay(String monthPay) { this.monthPay = monthPay; } public String getBillingAmount() { return billingAmount; } public void setBillingAmount(String billingAmount) { this.billingAmount = billingAmount; } public static Creator<CoseItemEntity> getCREATOR() { return CREATOR; } @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel parcel, int i) { parcel.writeString(totalSalary); parcel.writeString(monthSalary); parcel.writeString(manageSalary); parcel.writeString(insureSalary); parcel.writeString(insurePersonalSalary); parcel.writeString(insureUnitSalary); parcel.writeString(insureBusinessSalary); parcel.writeString(funds); parcel.writeString(personalFunds); parcel.writeString(unitFunds); parcel.writeString(others); parcel.writeString(taxes); parcel.writeString(monthPay); parcel.writeString(billingAmount); } public final static Creator<CoseItemEntity> CREATOR = new Creator<CoseItemEntity>() { @Override public CoseItemEntity createFromParcel(Parcel parcel) { CoseItemEntity entity = new CoseItemEntity(); entity.totalSalary = parcel.readString(); entity.monthSalary = parcel.readString(); entity.manageSalary = parcel.readString(); entity.insureSalary = parcel.readString(); entity.insurePersonalSalary = parcel.readString(); entity.insureUnitSalary = parcel.readString(); entity.insureBusinessSalary = parcel.readString(); entity.funds = parcel.readString(); entity.personalFunds = parcel.readString(); entity.unitFunds = parcel.readString(); entity.others = parcel.readString(); entity.taxes = parcel.readString(); entity.monthPay = parcel.readString(); entity.billingAmount = parcel.readString(); return entity; } @Override public CoseItemEntity[] newArray(int i) { return new CoseItemEntity[i]; } };}
单元测试 GsonTest.java
package com.practice.noyet.gsontest;import android.test.InstrumentationTestCase;/** * Created by noyet on 2015/9/27. */public class GsonTest extends InstrumentationTestCase { public void testGson() { GsonUtil.getGson(); }}
工具类 GsonUtil.java
package com.practice.noyet.gsontest;import android.util.Log;import com.google.gson.Gson;/** * Created by noyet on 2015/9/27. */public class GsonUtil { private final static String jsonStr = "{\"Data\":[" + "{\"CompanyName\":\"成都分公司\"," + "\"CompanyId\":265,\"CostTitle\":\"7月工资\"," + "\"Year\":2014,\"Month\":7,\"CoseItem\":{\"工资总额\":\"52382.57\"," + "\"当月工资总额\":\"52382.58\",\"管理费用及三费计提合计\":\"4578.74\"," + "\"当月社会保险费用合计\":\"15485.47\",\"当月社会保险费用个人部分\":\"4074.76\"," + "\"当月社会保险费用单位部分\":\"11410.71\",\"当月其他商业保险费用\":\"0.00\"," + "\"公积金合计\":\"5542.20\",\"公积金个人部分\":\"2771.10\",\"公积金单位部分\":\"2771.10\"," + "\"其他\":\"0.00\",\"代缴税金\":\"3948.73\",\"本月应付\":\"0.00\",\"开票金额\":\"71143.12\"}}," + "{\"CompanyName\":\"成都分公司)\",\"CompanyId\":265," + "\"CostTitle\":\"8月工资\",\"Year\":2014,\"Month\":8," + "\"CoseItem\":{\"工资总额\":\"53206.35\",\"当月工资总额\":\"53206.35\"," + "\"管理费用及三费计提合计\":\"4508.58\",\"当月社会保险费用合计\":\"13126.95\"," + "\"当月社会保险费用个人部分\":\"3423.90\",\"当月社会保险费用单位部分\":\"9703.05\"," + "\"当月其他商业保险费用\":\"0.00\",\"公积金合计\":\"4944.60\",\"公积金个人部分\":\"2472.30\"," + "\"公积金单位部分\":\"2472.30\",\"其他\":\"0.00\",\"代缴税金\":\"3878.58\"," + "\"本月应付\":\"0.00\",\"开票金额\":\"69890.28\"}}" + "]}"; public static void getGson() { Gson gson = new Gson(); Info info = gson.fromJson(jsonStr, Info.class); Log.d("json to object", info.toString()); String jsonObject = gson.toJson(info); Log.d("object to json", jsonObject); }}
log打印结果:
09-27 16:19:10.946 31970-31983/com.practice.noyet.gsontest D/json to object﹕ Info{list=[CompanyInfo{CompanyName='成都分公司', CompanyId=265, CostTitle='7月工资', Year=2014, Month=7, list=CoseItemEntity{totalSalary='52382.57', monthSalary='52382.58', manageSalary='4578.74', insureSalary='15485.47', insurePersonalSalary='4074.76', insureUnitSalary='11410.71', insureBusinessSalary='0.00', funds='5542.20', personalFunds='2771.10', unitFunds='2771.10', others='0.00', taxes='3948.73', monthPay='0.00', billingAmount='71143.12'}}, CompanyInfo{CompanyName='成都分公司', CompanyId=265, CostTitle='8月工资', Year=2014, Month=8, list=CoseItemEntity{totalSalary='53206.35', monthSalary='53206.35', manageSalary='4508.58', insureSalary='13126.95', insurePersonalSalary='3423.90', insureUnitSalary='9703.05', insureBusinessSalary='0.00', funds='4944.60', personalFunds='2472.30', unitFunds='2472.30', others='0.00', taxes='3878.58', monthPay='0.00', billingAmount='69890.28'}}]}09-27 16:19:10.954 31970-31983/com.practice.noyet.gsontest D/object to json﹕ {"Data":[{"CoseItem":{"开票金额":"71143.12","公积金合计":"5542.20","当月其他商业保险费用":"0.00","当月社会保险费用个人部分":"4074.76","当月社会保险费用合计":"15485.47","当月社会保险费用单位部分":"11410.71","管理费用及三费计提合计":"4578.74","本月应付":"0.00","当月工资总额":"52382.58","其他":"0.00","公积金个人部分":"2771.10","代缴税金":"3948.73","工资总额":"52382.57","公积金单位部分":"2771.10"},"CompanyName":"成都分公司","CostTitle":"7月工资","Month":7,"Year":2014,"CompanyId":265},{"CoseItem":{"开票金额":"69890.28","公积金合计":"4944.60","当月其他商业保险费用":"0.00","当月社会保险费用个人部分":"3423.90","当月社会保险费用合计":"13126.95","当月社会保险费用单位部分":"9703.05","管理费用及三费计提合计":"4508.58","本月应付":"0.00","当月工资总额":"53206.35","其他":"0.00","公积金个人部分":"2472.30","代缴税金":"3878.58","工资总额":"53206.35","公积金单位部分":"2472.30"},"CompanyName":"成都分公司","CostTitle":"8月工资","Month":8,"Year":2014,"CompanyId":265}]}
其中字符串的json格式:
{ "Data": [ { "CompanyName": "成都分公司", "CompanyId": 265, "CostTitle": "7月工资", "Year": 2014, "Month": 7, "CoseItem": { "工资总额": "52382.57", "当月工资总额": "52382.58", "管理费用及三费计提合计": "4578.74", "当月社会保险费用合计": "15485.47", "当月社会保险费用个人部分": "4074.76", "当月社会保险费用单位部分": "11410.71", "当月其他商业保险费用": "0.00", "公积金合计": "5542.20", "公积金个人部分": "2771.10", "公积金单位部分": "2771.10", "其他": "0.00", "代缴税金": "3948.73", "本月应付": "0.00", "开票金额": "71143.12" } }, { "CompanyName": "成都分公司", "CompanyId": 265, "CostTitle": "8月工资", "Year": 2014, "Month": 8, "CoseItem": { "工资总额": "53206.35", "当月工资总额": "53206.35", "管理费用及三费计提合计": "4508.58", "当月社会保险费用合计": "13126.95", "当月社会保险费用个人部分": "3423.90", "当月社会保险费用单位部分": "9703.05", "当月其他商业保险费用": "0.00", "公积金合计": "4944.60", "公积金个人部分": "2472.30", "公积金单位部分": "2472.30", "其他": "0.00", "代缴税金": "3878.58", "本月应付": "0.00", "开票金额": "69890.28" } } ]}
gosn知识
1、@SerializedName
此注解作用在属性上,表明这个属性在序列化成Json的时候,需要将名字序列化成注解的value属性指定的值。
这个注解将会覆盖任何的FieldNamingPolicy, 包括默认的命名策略。下面是一个介绍@SerializedName注解如何使用
2、通过gson工具把json字符串转换成对象
Info info = gson.fromJson(jsonStr, Info.class);
3、通过gson工具把对象转换成son字符串
String jsonObject = gson.toJson(info);
如果对gson的用法想要很深如的理解,可以阅读gson源码:
http://grepcode.com/file/repo1.maven.org/maven2/com.google.code.gson/gson/2.3.1/com/google/gson/Gson.java#Gson
这是一个可以在线阅读各种源码(如Android源码)的网站
0 0
- gson用法例子和Parcelable的用法例子
- sscanf()的用法和例子
- sscanf()的用法和例子
- sscanf()的用法和例子
- sscanf()的用法和例子
- sscanf()的用法和例子
- sscanf()的用法和例子
- sscanf()的用法和例子
- sscanf()的用法和例子
- mutex用法和例子
- CreateFile用法和例子
- CreateFile用法和例子
- CreateFile用法和例子
- CreateFile用法和例子
- GetPrivateProfileString用法和例子
- CreateFile用法和例子
- CreateFile用法和例子
- CreateFile用法和例子
- IntelliJ IDEA 开发工具使用学习资料
- Android视图状态及重绘流程分析,带你一步步深入了解View(三)
- DDoS攻击原理及防护方法论
- Bitmap工具类
- 数据结构------快排及另类快排思想解决问题
- gson用法例子和Parcelable的用法例子
- 美文分享
- object-c中类的声明和实现
- 04-树6 Complete Binary Search Tree
- HTTP协议学习小总结
- Hbase1.1.2 list所有的table
- system play - qemu with a lot of system imgs (maybe I'll develop one by myself)
- javaweb中Cookie对用户密码保存的例子
- 线程堆栈大小的使用介绍