json字符串已經佔據了數據傳輸的重要地位,我們難免要解析各種各樣的json字符串,今天我在解析時就遇到了這個問題,當我們解析的字符串中帶有關鍵字的字段,這種情況該字段是無法生成類的字段的,好在谷歌給我們提供了比較好的解決方法,就是使用@SerializedName(“”)註解。用法如下
@SerializedName註解的作用:定義屬性序列化後的名稱
//當我們直接定義如下字段時系統是報錯的,因爲abstract是java關鍵字
private String abstract; //報錯
//當我們加上如下註解時,JSON字符串中的abstract字段就對應了該類中newAbstract字段
@SerializedName("abstract")
private String newAbstract;
除了@SerializedName,谷歌還提供了其他註解,具體如下
@Expose註解的作用:區分實體中不想被序列化的屬性,其自身包含兩個屬性deserialize(反序列化)和serialize(序列化),默認都爲true。
使用 new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create();創建Gson對象,沒有@Expose註釋的屬性將不會被序列化.。
private class User{
private int id;
@Expose
private String name;
.......
}
這樣create() gson對象序列化user,只會有name這一個屬性
另外想要不序列化某個屬性,也可以使用transient。
private class User{
private int id;
private transient String name;
.......
}