java获取多层相同JSON数据的所有数据
时间: 2023-12-14 12:39:55 浏览: 101
可以使用递归的方式来获取多层相同JSON数据的所有数据。以下是一个示例代码:
```
public void getAllData(JSONObject json) {
Iterator<String> iterator = json.keys();
while (iterator.hasNext()) {
String key = iterator.next();
Object value = json.get(key);
if (value instanceof JSONObject) {
getAllData((JSONObject) value);
} else if (value instanceof JSONArray) {
JSONArray jsonArray = (JSONArray) value;
for (int i = 0; i < jsonArray.length(); i++) {
getAllData(jsonArray.getJSONObject(i));
}
} else {
// 这里处理获取到的数据,例如打印到控制台上
System.out.println(key + " : " + value);
}
}
}
```
在这个方法中,我们首先通过迭代器遍历JSON对象的每一个键值对。如果值是一个JSON对象,则递归调用`getAllData`方法获取所有数据。如果值是一个JSON数组,则遍历数组中的每一个元素,并递归调用`getAllData`方法获取所有数据。如果值是一个普通类型,则直接处理获取到的数据。
使用示例:
```
String jsonStr = "{\"name\":\"张三\",\"age\":18,\"address\":{\"province\":\"广东省\",\"city\":\"深圳市\",\"district\":\"南山区\"},\"friends\":[{\"name\":\"李四\",\"age\":20},{\"name\":\"王五\",\"age\":22}]}";
JSONObject json = new JSONObject(jsonStr);
getAllData(json);
```
输出结果:
```
name : 张三
age : 18
province : 广东省
city : 深圳市
district : 南山区
name : 李四
age : 20
name : 王五
age : 22
```
阅读全文