您的位置:首页 > 其它

gson相关封装解析

2016-04-24 14:27 405 查看
下面通过gson对数据进行简单的封装与解析,还是以上篇json解析的 数据为例:

{

"owner": "张三",

"statusCode": 1,

"policyId": "18510060885",

"seqNo": true,

"msg": false,

"status": 0

"insuranceInfo": {

"companyName": "李四",

"companyCode": 12345

"primary": [ {

"amount": 6656,

"insuranceCode": 4566,

"des": "babababa",

"selected": "555",

"buyRate": "45%",

"insuranceName": "王五",

"options": [ { "value": "value", "key": "key" } ] } ],

},

}

首先定义一个实体类对象对要封装的数据的一般定义:

public class Text1 {
public String owner;
public int  statusCode;
public int status;
public boolean seqNo;
public boolean msg;
public HashMap insuranceinfo;
public String getOwner() {
return owner;
}
public void setOwner(String owner) {
this.owner = owner;
}
public int getStatusCode() {
return statusCode;
}
public void setStatusCode(int statusCode) {
this.statusCode = statusCode;
}
public int getStatus() {
return status;
}
public void setStatus(int status) {
this.status = status;
}
public boolean isSeqNo() {
return seqNo;
}
public void setSeqNo(boolean seqNo) {
this.seqNo = seqNo;
}
public boolean isMsg() {
return msg;
}
public void setMsg(boolean msg) {
this.msg = msg;
}
public HashMap getInsurancoinfo() {
return insuranceinfo;
}
public void setInsurancoinfo(HashMap insurancoinfo) {
this.insuranceinfo = insurancoinfo;
}
@Override
public String toString() {
return "aaaa [owner=" + owner + ", statusCode=" + statusCode + ", status=" + status + ", seqNo=" + seqNo
+ ", msg=" + msg + ", insuranceinfo=" + ", insurancoin=" + insuranceinfo
+ ", getClass()=" + getClass() + ", hashCode()=" + hashCode() + ", toString()=" + super.toString()
+ "]";
}

接下来还是在Activity xml中简单的定义一个TextView对象用来展示封装过得字符串,其实封装过程有好多种,我就用HasMap,和List等进行简单封装具体封装如下:

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView=(TextView)findViewById(R.id.text);
button=(Button)findViewById(R.id.button);
init();

}
private void init() {
gson=new Gson();
Text1 text=new Text1();
text.owner="张三";
text.statusCode=88;
text.status=0;
text.seqNo=true;
text.msg=false;
HashMap<String,Object>insuranceinfo=new HashMap<>();
insuranceinfo.put("companyName","李四");
insuranceinfo.put("companyCode",234);
ArrayList<HashMap> primary=new ArrayList<>();
HashMap<String,Object>hash=new HashMap<>();
hash.put("amount",6656);
hash.put("insuranceCode",4566);
hash.put("des","babababa");
hash.put("selected",true);
ArrayList<HashMap>options=new ArrayList<>();
HashMap<String,String>hashM=new HashMap<>();
hashM.put("key","value");
hashM.put("value","key");
options.add(hashM);
hash.put("options",options);
primary.add(hash);
insuranceinfo.put("primary",primary);
text.insuranceinfo=insuranceinfo;
gson.toJson(text);
textView.setText(gson.toJson(text));
inDetail(gson.toJson(text));


最后TextView中显示的内容如下图:

gson相关的解析要比json相对简单一些。但是gson在解析时一般要根据解析的字符串对象建立相应的实体类对象,根据相应的层次关系进行嵌套,就以上面为例实体对象可以定义为:

public class Text1 {
public String owner;
public int  statusCode;
public int status;
public boolean seqNo;
public boolean msg;
public List<Insuranceinfo> insuranceinfo;


public  class Insuranceinfo {
public String companyName;
public int companyCode;
public List<Primary> primary;

public class Primary {
public int amount;
public int insuranceCode;
public String des;
public boolean selected;
public List<Options>options;

public class Options {
public String key;
public String value;

具体的git set方法自己生成就是了,接下来就是一般的解析了,gsonStr为封装传过来的字符串

private void inDetail(String gsonStr) {
if(!gsonStr.isEmpty()){
Text1 tex=new Text1();
Type type = new TypeToken<Text1>() {
}.getType();
tex=gson.fromJson(gsonStr,type);
final Text1 finalTex = tex;
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
List<Insuranceinfo>insuranceinfo=finalTex.getInsurancoinfo();
textView.setText(finalTex.getStatusCode()+ finalTex.getOwner()+
finalTex.getStatus()+finalTex.getInsurancoinfo().toString());
}
});
}

对于上述应用gson如果是在eclipse上调用gson要导入gson相关联的包,可以在下面地址下载:

http://download.csdn.net/detail/itachi85/8617065

如果用AndroidStudio的话可以在Project Structure ->Dependencies 中直接搜索Gson,Studio就会帮你自动下载相应的包只要正确选择就行。别的开源包等也是一样
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: