用 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);