zoukankan      html  css  js  c++  java
  • json数据格式和gson解析json的应用

    首先json的数据格式分为三种:数组、对象、数组对象混合

    数组格式:

    {"asd","qwe","ffe"}

    对象格式:

    {"a":1,"b":2,"c":3}  注意写代码中要加入转义字符来获取双引号:"

    数组对象混合格式:

    {   [

        {"a":1,"b":2},

        {"c":3,"d":4}

        ]

        [

        ....

       ]

    }

    用Gson解析Json,如果是有对象格式,需要使用javabean来实现,代码如下:

    1 //Object转换为对象
    2         String str = "{"data":[{"name":sad,"age":18},{"name":ddd,"age":13}]}";
    3         Gson g = new Gson();
    4         ListPerson list = g.fromJson(str,ListPerson.class);
    5         for (Person p:list.getList()){
    6             System.out.println("age:"+p.getAge()+" name:"+p.getName());
    7         }

    因为是数组+对象的混合格式,需要两个javabean来实现,以下是javabean方面的代码:

     1 static class Person{
     2         public String name ;
     3         public int age;
     4         public String getName() {
     5             return name;
     6         }
     7 
     8         public void setName(String name) {
     9             this.name = name;
    10         }
    11 
    12         public int getAge() {
    13             return age;
    14         }
    15 
    16         public void setAge(int age) {
    17             this.age = age;
    18         }
    19     }
    20 
    21     static class ListPerson{
    22         List<Person> data ;
    23 
    24         public List<Person> getList() {
    25             return data;
    26         }
    27 
    28         public void setList(List<Person> list) {
    29             this.data = list;
    30         }
    31     }

    注意点:名字要一一对应,因为在json中我的数组名是data,所以在javabean中什么的变量名也要是data,以下是换了别的名字,控制台输出信息:

    java.lang.NullPointerException

    接下来是对象转换为json数据格式,代码如下:

    1 Map<String,Integer> map = new HashMap<>();
    2         map.put("a",1);
    3         map.put("b",2);
    4         map.put("c",3);
    5         System.out.println(new Gson().toJson(map));

    如果在使用数组格式的json数据,要获取泛型类的类型,在gson中提供了一个方法

    new TypeToken<List<Map.Entry<String,String>>>(){}.getType()


    参考链接:https://www.jianshu.com/p/e740196225a4
  • 相关阅读:
    android webview 使用以及一些异常处理及上传文件问题
    bootstrap 下拉菜单不显示的解决办法
    无损图片缩放
    startssl,免费的ssl证书申请及注意事项
    iis7.5
    vs2013 类名颜色显示黑色,无法修改
    "未能找到类型或命名空间名称",引用dll的时候出错
    由于 add 运算符中“Chinese_PRC_CI_AS”和“Chinese_PRC_CS_AS_WS”之间的排序规则冲突
    asp.net mvc int[] 和 string[] 自定义数组绑定
    windbg定位WEB性能瓶颈案例一则
  • 原文地址:https://www.cnblogs.com/shigeng/p/8631385.html
Copyright © 2011-2022 走看看