首先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
json数据格式和gson解析json的应用
原文地址:https://www.cnblogs.com/shigeng/p/8631385.html