关于Gson解析复杂类型的json数据
最近在写一个app项目,搭建网络框架的时候,遇到一个问题客户端用gson解析服务器返回的复杂json数据,之所以说它复杂是因为服务器返回的json数据不仅包含对象类型,还包含一个数组列表list,list下又包含多个对象,返回数据如下(用中括号括起来的为list部分,只不过里面的数据为空)
(1)返回正确时的json数据如下:
{"status": "true", "data": {"count": 0, "list": []}}
(2)返回错误时的json数据如下:
{"status": "false", "err_code": "err_2","description":"\u670d\u52a1\u5668\u4e0a\u4f20\u89c6\u9891\u5931\u8d25"}
解决方法是封装一个包括status、data、count、list、err_code、description的Bean类:
public class BaseResp implements Serializable{ private String status; @SerializedName("err_code") private String errCode; private MetaData data; private String description; public String getStatus() { return status; } public void setStatus(String status) { this.status = status; } public MetaData getData() { return data; } public void setData(MetaData data) { this.data = data; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } public String getErrCode() { return errCode; } public void setErrCode(String errCode) { this.errCode = errCode; } }
由于以后还要封装其他类型的list,所以我把data封装成一个MetaData类,以后还可以增加字段:
public class MetaData { private Listlist; private int count; public int getCount() { return count; } public void setCount(int count) { this.count = count; } public List getList() { return list; } public void setList(List list) { this.list = list; } }
String json = new String(response); BaseResp baseResp = myGson.fromJson(json, BaseResp.class); return myGson.fromJson(json, BaseResp.class);