那就直接开始吧。
在我们获取服务器返回的json数据有时候会出现这种情况,比如:
{ "body":{ "attrName":"feed","result":[{"time":63000000,"food":14,"id":2,}]},"when":"20180426170357+0800"}
{ "body":{ "attrName":"media","result":{"singer":"薛之谦","name":"你还要我怎样"}},"when":"20180426170357+0800"}
两条数据其他结构相同,但前者的"result"是一个json数组,而后者直接是一条json字符串。
此时我们可以将实体类这样写:
1 public class ReportBean{ 2 3 private Body body; 4 private String when; 5 6 public Body getBody() { 7 return body; 8 } 9 10 public void setBody(Body body) {11 this.body= body;12 }13 14 public String getWhen() {15 return when;16 }17 18 public void setWhen(String when) {19 this.when = when;20 }21 22 public class Body {23 24 private String attrName;25 private T result;26 27 public String getAttrName() {28 return attrName;29 }30 31 public void setAttrName(String attrName) {32 this.attrName = attrName;33 }34 35 public T getResult() {36 return result;37 }38 39 public void setResult(T result) {40 this.result = result;41 }42 43 }44 }
接下来,当我们处理数据时——
第一种,json数组:
Type jsonType = new TypeToken
>>() {}.getType();ReportBean
> reportBean = new Gson().fromJson(jsonStr, jsonType);
要获取的泛型数组即bean.getBody().getResult;
第二种,json字符串:
Type jsonType = new TypeToken>() {}.getType();ReportBean reportBean = new Gson().fromJson(jsonStr, jsonType);
ResultBean即为自定义的泛型中具体的数据实体类,此时数据就都已经解析到 reportBean 里面了,再根据自己的需要取出即可。