用 Gson 解析 JSON
該示例顯示了使用 Google 的 Gson 庫解析 JSON 物件。
解析物件:
class Robot {
//OPTIONAL - this annotation allows for the key to be different from the field name, and can be omitted if key and field name are same . Also this is good coding practice as it decouple your variable names with server keys name
@SerializedName("version")
private String version;
@SerializedName("age")
private int age;
@SerializedName("robotName")
private String name;
// optional : Benefit it allows to set default values and retain them, even if key is missing from Json response. Not required for primitive data types.
public Robot{
version = "";
name = "";
}
}
然後,在需要進行解析的地方,使用以下命令:
String robotJson = "{
\"version\": \"JellyBean\",
\"age\": 3,
\"robotName\": \"Droid\"
}";
Gson gson = new Gson();
Robot robot = gson.fromJson(robotJson, Robot.class);
解析清單:
檢索 JSON 物件列表時,通常需要解析它們並將它們轉換為 Java 物件。
我們將嘗試轉換的 JSON 字串如下:
{
"owned_dogs": [
{
"name": "Ron",
"age": 12,
"breed": "terrier"
},
{
"name": "Bob",
"age": 4,
"breed": "bulldog"
},
{
"name": "Johny",
"age": 3,
"breed": "golden retriever"
}
]
}
此特定 JSON 陣列包含三個物件。在我們的 Java 程式碼中,我們要將這些物件對映到 Dog
物件。Dog 物件看起來像這樣:
private class Dog {
public String name;
public int age;
@SerializedName("breed")
public String breedName;
}
要將 JSON 陣列轉換為 Dog[]
:
Dog[] arrayOfDogs = gson.fromJson(jsonArrayString, Dog[].class);
將 Dog[]
轉換為 JSON 字串:
String jsonArray = gson.toJson(arrayOfDogs, Dog[].class);
要將 JSON 陣列轉換為 ArrayList<Dog>
,我們可以執行以下操作:
Type typeListOfDogs = new TypeToken<List<Dog>>(){}.getType();
List<Dog> listOfDogs = gson.fromJson(jsonArrayString, typeListOfDogs);
Type 物件 typeListOfDogs
定義了 Dog
物件的列表。GSON 可以使用此型別物件將 JSON 陣列對映到正確的值。
或者,可以以類似的方式將 List<Dog>
轉換為 JSON 陣列。
String jsonArray = gson.toJson(listOfDogs, typeListOfDogs);