天天看點

使用Gson和FastJson解析JSON資料遇到的問題

在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”)