Gson 是 Google 推出的一個(gè) Java 庫(kù),可用于將 Java 對(duì)象轉(zhuǎn)換為 JSON 格式數(shù)據(jù),也可將 JSON 格式數(shù)據(jù)轉(zhuǎn)換為 Java 對(duì)象。這個(gè)庫(kù)廣泛應(yīng)用于 Android 開(kāi)發(fā)中。
嵌套 JSON 通常指一個(gè) JSON 中包含的另一個(gè) JSON。使用 Gson 轉(zhuǎn)換這樣的 JSON 數(shù)據(jù)需要一些特殊的處理。
String jsonString = "{
\"name\": \"張三\",
\"age\": 28,
\"address\": {
\"city\": \"上海\",
\"street\": \"南京西路\"
}
}";
Gson gson = new Gson();
Person person = gson.fromJson(jsonString, Person.class);
上述示例展示了一個(gè)嵌套的 JSON 數(shù)據(jù),其中一個(gè) Person 對(duì)象包含了一個(gè) Address 對(duì)象。我們可以使用 Gson 將這個(gè) JSON 數(shù)據(jù)轉(zhuǎn)換為一個(gè) Person 對(duì)象。
public class Person {
String name;
int age;
Address address;
}
public class Address {
String city;
String street;
}
上述示例展示了 Person 和 Address 的類(lèi)定義。我們可以將 JSON 數(shù)據(jù)中包含的 Address 對(duì)象轉(zhuǎn)換為一個(gè) Java 對(duì)象。只需要在 Person 類(lèi)中添加一個(gè) Address 類(lèi)型的成員變量。
如果 JSON 數(shù)據(jù)中包含的是一個(gè)數(shù)組,則需要使用 TypeToken 進(jìn)行處理:
String jsonString = "{
\"students\": [{
\"name\": \"小明\",
\"age\": 12
}, {
\"name\": \"小紅\",
\"age\": 13
}]
}";
Gson gson = new Gson();
Type userListType = new TypeToken>(){}.getType();
ArrayListstudents = gson.fromJson(jsonString, userListType);
上述示例展示了一個(gè)包含多個(gè) Student 對(duì)象的 JSON 數(shù)據(jù)。我們可以使用 Gson 將這個(gè) JSON 數(shù)據(jù)轉(zhuǎn)換成一個(gè)包含多個(gè) Student 對(duì)象的 ArrayList 對(duì)象。
嵌套 JSON 轉(zhuǎn)換需要特定的處理,但是使用 Gson 進(jìn)行 JSON 數(shù)據(jù)轉(zhuǎn)換相對(duì)較簡(jiǎn)單,并且可以處理多種不同類(lèi)型的 JSON 數(shù)據(jù)。