zoukankan      html  css  js  c++  java
  • Gson解析List的一点小问题

            这阵子在使用gson解析时遇到了点小麻烦,因为一直用的fastjson,最近一个项目里使用的gson,需要解析list集合,查资料都是使用TypeToken解决,相对比较麻烦,下面为大伙推荐一种简便的方法。
    <Object> Object com.google.gson.Gson.fromJson(String json, Class<Object> classOfT) throws JsonSyntaxException 可以方便地帮我们把Json字符串转换成对应类型的对象。这里提供一个简单的例子,帮助大家理解。
    Json字符串
    {response: "success", demoList: [{id: "1", name: "jack", age: "21"},{id: "2", name: "joke", age: "22"},{id: "3", name: "pink", age: "23"}]}
    Demo.java
    public class Demo {      private String id;      private String name;      private int age; }
           如果要解析出来Demo的List,我们该怎么做呢?一般朋友查到网上的资料都是使用TypeToken的方法。
    T com.google.gson.Gson.fromJson(String json, Class<T> classOfT) throws JsonSyntaxException
    这个方法用起稍微有那么一点复杂,不过对于这个例子还不是很复杂,既然还是复杂,那就不讨论它了,这不是这儿的重点。
           重点说说后面的方法:Gson.fromJson(String json, Class<Object> classOfT),因为我们需要Demo的集合,所以就封装一个DemoList类,用这个类接收fromJson()返回的结果,如下:
    DemoList.java
    public class DemoList {
         private List<Demo> demoList;
         public List<Demo> getDemoList() {
             return demoList;
     }

         public void setDemoList(List<Demo> demoList) {
            this.demoList = demoList;
         }
    }
           接下来,在解析时候就可以一行代码搞定整个Json的反序列化操作,这时候才真正看到了Gson的强大之处,但值得注意的就是DemoList中红色的成员变量,它的名字应该是和Json字符串中集合的键是对应的,我就是因为不知道这点让我饱经磨难。
    DemoList demo = new Gson().fromJson(json,DemoList.class);
    List<Demo> list = demo.getDemoList();

           是不是相当简单,不用fastJson一样,一级一级剥开了再处理,还要处理异常,但是个人还是感觉fastJson比较容易理解些,反正各有长短吧,以上纯属个人见解,大家习惯用谁谁,只希望能帮到遇到和我一样情况的朋友们。

  • 相关阅读:
    There is an overlap in the region chain修复
    There is an overlap in the region chain
    region xx not deployed on any region server
    python 中的re模块,正则表达式
    TCP粘包问题解析与解决
    yield from
    Git push提交时报错Permission denied(publickey)...Please make sure you have the correct access rights and the repository exists.
    mysql 中Varchar 与char的区别
    Mysql 字符集及排序规则
    请实现一个装饰器,限制该函数被调用的频率,如10秒一次
  • 原文地址:https://www.cnblogs.com/magics/p/4022264.html
Copyright © 2011-2022 走看看