Gson下載的話大家可以去網上找下,下載jar加入到項目工程就可以使用。本文主要講Gson一些常用用法。
toJson就是轉爲Json,fromJson就是解析Json。
有:
一.數組類型與Gson之間的相互轉換
二.Bean對象 與Gson之間的相互轉換
三.List集合類型與 Json 轉換
四.Map與Gson,和List差不多
一.數組類型與Gson之間的相互轉換
Gson gson = new Gson();
int[] ints = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
String[] strings= { "Onw", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten" };
String intsJson = gson.toJson(ints);
String stringsJson = gson.toJson(strings);
System.out.println("intsJson --->>> " + intsJson);
System.out.println("stringsJson --->>> " + stringsJson);
輸出結果爲
intsJson --->>> [1,2,3,4,5,6,7,8,9,10]
stringsJson --->>> ["Onw","Two","Three","Four","Five","Six","Seven","Eight","Nine","Ten"]
好像沒什麼變化,數組類型與Json間用的比較少。繼續看下面
二.Bean對象 與Gson之間的相互轉換
假如現在有個對象Person
public class Person {
int age;
String name;
public Person(int age , String name) {
// TODO Auto-generated constructor stub
this.age = age;
this.name = name;
}
}
然後
Gson gson = new Gson();
Person person = new Person(23 , "Hong");
String personJson = gson.toJson(person);
System.out.println("PersonJson --->>>" + personJson);
輸出 PersonJson --->>>{"age":23,"name":"Hong"}
然後要把Json轉爲對象的話。這裏\" 才表示一個雙引號
Person personFromJson = gson.fromJson("{\"age\":23,\"name\":\"Hong\"}" , Person.class);
List<Person> list = new ArrayList<Person>();
for(int i = 0 ; i < 5 ; i++){
list.add(new Person(i, "Hong" + i + i));
}
String listJson = gson.toJson(list);
System.out.println("List >>--" + listJson );
輸出結果爲:List>>--[{"age":0,"name":"Hong00"},{"age":1,"name":"Hong11"},{"age":2,"name":"Hong22"},{"age":3,"name":"Hong33"},{"age":4,"name":"Hong44"}]
是不是感覺很好用!
List的JSON再轉爲List<> 的話 ,需要用到 Type .Type 爲 java.lang.reflect.Type 包下的
Type type = new TypeToken<List<Person>>(){}.getType();
List<Person> personList = gson.fromJson(listJson , type);
for (Person person : personList) {
System.out.println("person age = " + person.age);
}
輸出結果就不貼了
四.Map與Gson,和List差不多
Map<String, String> colours = new HashMap<String, String>();
colours.put("BLACK", "#000000");
colours.put("RED", "#FF0000");
colours.put("GREEN", "#008000");
String mapJson = gson.toJson(colours);
System.out.println("MapJson = " + mapJson);
輸出結果
MapJson = {"RED":"#FF0000","BLACK":"#000000","GREEN":"#008000"}
Type type = new TypeToken<Map<String, String>>(){}.getType();
Map<String, String> map = gson.fromJson(mapJson, type);
for (String key : map.keySet()) {
System.out.println("map.get = " + map.get(key));
}
細心對比發現主要是TypeToke裏面參數變了另一個而已。
Gson常用的用法大概就是這樣。