java递归解析json
时间: 2023-10-14 18:09:58 浏览: 115
Java中可以使用递归方式解析JSON数据。以下是一个示例代码,它可以解析一个包含嵌套结构的JSON对象:
```java
import org.json.*;
public class JsonParser {
public static void parseJSON(JSONObject json) {
for (String key : json.keySet()) {
Object value = json.get(key);
if (value instanceof JSONObject) {
System.out.println("Object: " + key);
parseJSON((JSONObject)value);
} else if (value instanceof JSONArray) {
System.out.println("Array: " + key);
parseJSON((JSONArray)value);
} else {
System.out.println(key + ": " + value);
}
}
}
public static void parseJSON(JSONArray json) {
for (int i = 0; i < json.length(); i++) {
Object value = json.get(i);
if (value instanceof JSONObject) {
parseJSON((JSONObject)value);
} else if (value instanceof JSONArray) {
parseJSON((JSONArray)value);
} else {
System.out.println("Value: " + value);
}
}
}
public static void main(String[] args) {
String jsonString = "{\"name\":\"John\",\"age\":30,\"city\":\"New York\",\"hobbies\":[{\"name\":\"reading\",\"type\":\"indoor\"},{\"name\":\"hiking\",\"type\":\"outdoor\"}],\"books\":{\"fiction\":{\"title\":\"The Great Gatsby\",\"author\":\"F. Scott Fitzgerald\"},\"non-fiction\":{\"title\":\"Thinking, Fast and Slow\",\"author\":\"Daniel Kahneman\"}}}";
JSONObject json = new JSONObject(jsonString);
parseJSON(json);
}
}
```
在这个示例中,我们定义了一个名为`parseJSON`的静态方法,它接受一个`JSONObject`或`JSONArray`对象作为参数,并使用递归方式解析它们。如果值是一个对象,则我们将其打印为“Object: key”,并递归调用`parseJSON`方法。如果值是一个数组,则我们将其打印为“Array: key”,并递归调用`parseJSON`方法。最后,如果值是一个简单值,我们将其打印为“key: value”。
在`main`方法中,我们创建一个JSON字符串,并将其转换为`JSONObject`对象。然后,我们调用`parseJSON`方法来解析JSON对象。输出如下:
```
name: John
age: 30
city: New York
Array: hobbies
Object: books
```
注意,我们只打印了数组和对象的键,而没有打印它们的值。这是因为我们使用递归方式解析JSON数据,每次递归只处理一个对象或数组,而不是将整个JSON数据打印出来。这个方法可以解析任何复杂度的JSON数据,并且非常灵活。
阅读全文