json數據格式和gson解析json的應用
阿新 • • 發佈:2018-03-23
shu from ... gin color OS inter list 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 publicString 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 publicvoid 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的應用