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
原文地址:https://www.cnblogs.com/shigeng/p/8631385.html