java遍历JSONObject
时间: 2025-06-16 21:24:08 浏览: 18
### Java 遍历 JSONObject 示例代码
在 Java 中遍历 `JSONObject`,可以使用多种方法。以下是一些常见的实现方式:
#### 方法一:递归遍历嵌套的 `JSONObject` 和 `JSONArray`
这种方法适用于处理嵌套结构的 JSON 数据。通过递归调用函数,可以深入解析每个层级的内容。
```java
import org.json.JSONArray;
import org.json.JSONObject;
public class JsonTraverser {
public static void traverseJson(JSONObject jsonObject) {
jsonObject.keySet().forEach(key -> {
Object value = jsonObject.get(key);
if (value instanceof JSONObject) {
// 如果是 JSONObject,递归调用
System.out.println("JSONObject: " + key);
traverseJson((JSONObject) value);
} else if (value instanceof JSONArray) {
// 如果是 JSONArray,遍历数组
System.out.println("JSONArray: " + key);
JSONArray jsonArray = (JSONArray) value;
for (int i = 0; i < jsonArray.length(); i++) {
Object arrayValue = jsonArray.get(i);
if (arrayValue instanceof JSONObject) {
traverseJson((JSONObject) arrayValue);
} else {
System.out.println("Value: " + arrayValue);
}
}
} else {
// 否则打印键和值
System.out.println("Key: " + key + ", Value: " + value);
}
});
}
public static void main(String[] args) {
String jsonString = "{ \"qq\": [\"[email protected]\", \"742981086\"], \"name\": \"aflyun\", \"age\": 22, \"hobby\": [\"编程\", \"看书\", \"徒步\", \"爬山\", \"游泳\"], \"address\": {\"省份\": \"广东\", \"市\": \"惠州\", \"国籍\": \"中国\"} }";
JSONObject jsonObject = new JSONObject(jsonString);
traverseJson(jsonObject);
}
}
```
这段代码展示了如何递归地遍历一个包含嵌套对象和数组的 `JSONObject`[^1]。
---
#### 方法二:使用迭代器遍历简单的 `JSONObject`
如果只需要遍历顶层的键值对,而不需要处理嵌套结构,则可以使用迭代器。
```java
import org.json.JSONObject;
import java.util.Iterator;
import java.util.Map;
public class SimpleJsonIterator {
public static void main(String[] args) {
JSONObject jsonInfo = new JSONObject();
jsonInfo.put("a", "aa");
jsonInfo.put("b", "bb");
Iterator<Map.Entry<String, Object>> iter = jsonInfo.entrySet().iterator();
while (iter.hasNext()) {
Map.Entry<String, Object> entry = iter.next();
System.out.println("Key: " + entry.getKey());
System.out.println("Value: " + entry.getValue());
}
}
}
```
此代码片段展示了一个简单的方式,通过迭代器遍历 `JSONObject` 的键值对[^2]。
---
#### 方法三:遍历包含数组的 `JSONObject`
对于包含数组的 JSON 数据,可以通过类型检查来区分键对应的值是否为数组,并分别处理。
```java
import org.json.JSONArray;
import org.json.JSONObject;
public class JsonArrayHandler {
public static void main(String[] args) {
String jsonString = "{ \"qq\": [\"[email protected]\", \"742981086\"], \"name\": \"aflyun\", \"age\": 22, \"hobby\": [\"编程\", \"看书\", \"徒步\", \"爬山\", \"游泳\"] }";
JSONObject jsonObject = new JSONObject(jsonString);
for (String key : jsonObject.keySet()) {
Object value = jsonObject.get(key);
if (value instanceof JSONArray) {
System.out.println("JSONArray: " + key);
JSONArray jsonArray = (JSONArray) value;
for (int i = 0; i < jsonArray.length(); i++) {
System.out.println("Value: " + jsonArray.get(i));
}
} else {
System.out.println("Key: " + key + ", Value: " + value);
}
}
}
}
```
该示例展示了如何处理包含数组的 `JSONObject`,并正确解析数组中的元素[^3]。
---
#### 注意事项
- 在处理复杂 JSON 数据时,建议先检查数据结构,以确保代码逻辑能够正确处理所有可能的情况。
- 使用 `org.json` 库时,需注意其版本兼容性问题。
- 如果需要处理更复杂的 JSON 数据,可以考虑使用其他库(如 Jackson 或 Gson)。
---
阅读全文
相关推荐


















