• java android使用Gson解析泛型json数据


    那就直接开始吧。

    在我们获取服务器返回的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<T>{
     2 
     3     private Body<T> body;
     4     private String when;
     5 
     6     public Body<T> getBody() {
     7         return body;
     8     }
     9 
    10     public void setBody(Body<T> 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<T>  {
    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<ReportBean<List<ResultBean>>>() {}.getType();
    
    ReportBean<List<ResultBean>> reportBean = new Gson().fromJson(jsonStr, jsonType);

    要获取的泛型数组即bean.getBody().getResult;


    第二种,json字符串:

    Type  jsonType = new TypeToken<ReportBean<ResultBean2>>() {}.getType();
    
    ReportBean<ResultBean2> reportBean = new Gson().fromJson(jsonStr, jsonType);

    ResultBean即为自定义的泛型中具体的数据实体类,此时数据就都已经解析到 reportBean 里面了,再根据自己的需要取出即可。

  • 相关阅读:
    [CF707D]Persistent Bookcase_主席树_bitset
    [CF798D]Mike and distribution_贪心
    [LuoguP2164][SHOI2007]交通网络_拓扑排序_概率期望
    [LuoguP3064][USACO12DEC]伊斯坦布尔的帮派Gangs of Istanbull(加强版)_线段树_贪心
    [CF306C]White, Black and White Again_排列组合
    [LuoguP2167][SDOI2009]Bill的挑战_容斥原理/状压dp
    [LuoguP2163][SHOI2007]园丁的烦恼_CDQ分治
    正则字符串插入字符
    [react]
    react 预览pdf 转换
  • 原文地址:https://www.cnblogs.com/Sharley/p/8954055.html
Copyright © 2020-2023  润新知