Gson(又稱Google Gson)是Google公司發佈的一個開放源代碼的Java庫,主要用途為序列化Java對象為JSON字符串,或反序列化JSON字符串成Java對象。
1 基礎用法toJson
toJason()方法將對象轉換成Json字符串
Gson gson = new Gson();
List persons = new ArrayList();
String str = gson.toJson(persons);
2 基礎用法:fromJson()
Gson提供了fromJson()方法來實現從Json字符串轉化為到java實體的方法。
比如json字符串為:[{“name”:”name0”,”age”:0}]
Person person = gson.fromJson(str, Person.class);
提供兩個參數,分別是json字符串以及需要轉換對象的類型。
3 避免Unicode轉義
例如:
{"s":"\u003c"}
我只想簡單的打印成這樣
{"s":"
解決方案:
只需要 disable HTML escaping.
Gson gson = new GsonBuilder().disableHtmlEscaping().create();
4 排除某些字段
如果一個類A中含有字段field1,它的父類也含有字段field1,那麼A對象toJson的時候,就會發生declares multiple JSON fields named field1。
解決方案1:在類A中去掉字段filed1.
解決方案2:使用Json的@Expose註解
將A類MessageText中需要打印的字段filed1加上註解@Expose 。那麼父類中沒有加註解的field1就會被排除掉。
Gson g = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create();
5 換屬性名字
public class SomeClassWithFields {
@SerializedName("name") private final String someField;
private final String someOtherField;
public SomeClassWithFields(String a, String b) {
this.someField = a;
this.someOtherField = b;
}
}
SomeClassWithFields objectToSerialize = new SomeClassWithFields("a", "b");
Gson gson = new Gson();
String jsonRepresentation = gson.toJson(objectToSerialize);
System.out.println(jsonRepresentation);
===== OUTPUT =====
{"name":"a","someOtherField":"b"}
6 加版本號
public class User {
private String firstName;
private String lastName;
@Since(1.0) private String emailAddress;
@Since(1.0) private String password;
@Since(1.1) private Address address;
}
7 泛型的用法
HashMap booksMap = gson.fromJson(result, new TypeToken>() { }.getType());