用 Gson 解析 JSON

該示例顯示了使用 GoogleGson 庫解析 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);