java 递归解析json_Java递归解析任意层的Json数据,获取所有的key和value,
时间: 2024-03-19 14:46:12 浏览: 139
好的,我可以为您解答。下面是一个递归解析JSON并获取所有键和值的Java代码示例:
```java
import org.json.JSONArray;
import org.json.JSONObject;
public class JsonParser {
public static void main(String[] args) {
String jsonStr = "{\"name\":\"John\", \"age\":30, \"cars\":[ \"Ford\", \"BMW\", \"Fiat\" ] }";
JSONObject jsonObj = new JSONObject(jsonStr);
parseJson(jsonObj);
}
public static void parseJson(JSONObject jsonObj) {
for (String key : jsonObj.keySet()) {
Object value = jsonObj.get(key);
if (value instanceof JSONObject) {
parseJson((JSONObject) value);
} else if (value instanceof JSONArray) {
parseJsonArray((JSONArray) value);
} else {
System.out.println(key + " : " + value);
}
}
}
public static void parseJsonArray(JSONArray jsonArray) {
for (int i = 0; i < jsonArray.length(); i++) {
Object value = jsonArray.get(i);
if (value instanceof JSONObject) {
parseJson((JSONObject) value);
} else if (value instanceof JSONArray) {
parseJsonArray((JSONArray) value);
} else {
System.out.println(value);
}
}
}
}
```
在这个示例中,我们使用了JSON库org.json来解析JSON字符串。我们定义了两个方法parseJson()和parseJsonArray(),它们都用于递归地解析JSON对象和JSON数组。如果值是JSON对象,则我们递归调用parseJson()方法。如果值是JSON数组,则我们递归调用parseJsonArray()方法。如果值是其他类型的对象,则我们直接打印键和值。
阅读全文