在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数据。