1. 程式人生 > >json數據格式和gson解析json的應用

json數據格式和gson解析json的應用

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         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的應用