在Android中解析Gson解析json資料是很友善快捷的,可以直接将json資料解析成java對象或者集合。
Gson解析json的方法我這裡就不詳細說明了,網上一大把的例子,我這裡主要說一下使用@SerializedName進行注解的情況。
使用Gson解析json成對象時預設的是将json裡對應字段的值解析到java對象裡對應字段的屬性裡面。然後我們經常會遇到我們自己定義的java對象裡的屬性名跟json裡的字段名是不一樣的,這種情況怎麼辦呢,這時我們就可以使用@SerializedName注解來将對象裡的屬性跟json裡字段對應值比對起來。
下面說說具體使用方法:
我們有一段json資料如下:
{
“id”:”1”
“n”:”zhangsan”
“p”:”123456”
“s”:”0”
}
這是一個user的資料包括id、使用者名、密碼、性别,如果正常些一個user類來解析的話是這樣的:
public class User{
private String id;
private String n;
private String p;
private String s;
}
User類要這樣寫才能直接使用Gson直接解析出來,但是這樣的話User類的屬性命名就不太友好了,那我們要怎麼做呢?Gson提供注解的方法來解決這個問題@SerializedName,使用方法如下:
public class User{
private String id;
@SerializedName(“n”)
private String userName;
@SerializedName(“p”)
private String password;
@SerializedName(“s”)
private String sex;
}
這樣再使用Gson解析的時候就會将n對應的值指派到userName屬性上,同樣的如果我們要将User生成json字元串使用Gson生成的時候也會将userName的名字生成n。這樣就解決了java對象裡屬性名跟json裡字段名不比對的情況了。
如果是使用的FastJson解析需要在get和set方法上加上@JSONField(name=”SOMETHING”)