在Android開(kāi)發(fā)中,Gson是一種流行的JSON解析庫(kù),它能夠方便地將JSON數(shù)據(jù)轉(zhuǎn)換為Java對(duì)象。這個(gè)過(guò)程一般需要?jiǎng)?chuàng)建Java類以匹配JSON的結(jié)構(gòu),但Gson也支持解析動(dòng)態(tài)JSON數(shù)組(即,包含不同類型元素的數(shù)組),不需要事先知道每個(gè)元素的類型。
String json = "[\"Hello\", 1, true, {\"name\":\"Alice\", \"age\":30}]";
JsonParser parser = new JsonParser();
JsonElement element = parser.parse(json);
if (element.isJsonArray()) {
JsonArray array = element.getAsJsonArray();
for (JsonElement jsonElement : array) {
if (jsonElement.isJsonPrimitive()) {
Log.i("GSON_PARSER", jsonElement.getAsString());
} else if (jsonElement.isJsonObject()) {
JsonObject obj = jsonElement.getAsJsonObject();
Log.i("GSON_PARSER", "Name: " + obj.get("name").getAsString() + ", Age: " + obj.get("age").getAsInt());
}
}
}
上面的代碼演示了如何解析一個(gè)包含字符串、數(shù)字、布爾值和嵌套對(duì)象的JSON數(shù)組。首先,我們將JSON字符串傳遞給Gson的JsonParser對(duì)象進(jìn)行解析。然后,我們檢查解析出的元素是否是一個(gè)JSON數(shù)組,并使用getAsJsonArray()方法將其轉(zhuǎn)換為JsonArray對(duì)象。
我們遍歷數(shù)組中的每個(gè)元素,使用isJsonPrimitive()方法確定元素是否是一個(gè)簡(jiǎn)單值(如字符串、數(shù)字或布爾值),并使用getAsString()方法獲取值。如果元素是一個(gè)對(duì)象,則使用getAsJsonObject()方法將其轉(zhuǎn)換為JsonObject對(duì)象,并使用get()方法獲取屬性值。
通過(guò)使用Gson解析動(dòng)態(tài)JSON數(shù)組,我們可以更輕松地處理復(fù)雜的JSON數(shù)據(jù)。