在Java中解析復雜的JSON格式數據通常有以下幾種方法:
以Jackson庫為例,可以使用以下代碼解析JSON數據:
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
String jsonString = "[{\"name\":\"John\",\"age\":30,\"cars\":[\"Ford\",\"BMW\",\"Fiat\"]},{\"name\":\"Alice\",\"age\":25,\"cars\":[\"Toyota\",\"Honda\"]}]";
ObjectMapper objectMapper = new ObjectMapper();
JsonNode jsonNode = objectMapper.readTree(jsonString);
for (JsonNode node : jsonNode) {
String name = node.get("name").asText();
int age = node.get("age").asInt();
String cars = node.get("cars").toString();
System.out.println("Name: " + name);
System.out.println("Age: " + age);
System.out.println("Cars: " + cars);
}
以下是一個使用遞歸解析JSON數據的例子:
import java.util.Iterator;
import org.json.JSONArray;
import org.json.JSONObject;
String jsonString = "[{\"name\":\"John\",\"age\":30,\"cars\":[\"Ford\",\"BMW\",\"Fiat\"]},{\"name\":\"Alice\",\"age\":25,\"cars\":[\"Toyota\",\"Honda\"]}]";
JSONArray jsonArray = new JSONArray(jsonString);
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject jsonObject = jsonArray.getJSONObject(i);
parseJson(jsonObject);
}
public void parseJson(JSONObject jsonObject) {
Iterator<String> keys = jsonObject.keys();
while (keys.hasNext()) {
String key = keys.next();
Object value = jsonObject.get(key);
if (value instanceof JSONObject) {
parseJson((JSONObject) value);
} else if (value instanceof JSONArray) {
JSONArray jsonArray = (JSONArray) value;
for (int i = 0; i < jsonArray.length(); i++) {
Object arrayValue = jsonArray.get(i);
if (arrayValue instanceof JSONObject) {
parseJson((JSONObject) arrayValue);
} else {
System.out.println(key + ": " + arrayValue.toString());
}
}
} else {
System.out.println(key + ": " + value.toString());
}
}
}
以上是兩種常用的解析復雜JSON格式數據的方法,你可以根據自己的需求選擇其中一種方法來解析JSON數據。