java递归循环解析json
时间: 2023-08-05 11:23:32 浏览: 163
在Java中解析JSON可以使用很多第三方库,其中比较流行的有Jackson、Gson、FastJson等。下面以Jackson为例,介绍一下如何使用递归循环解析JSON。
假设我们有以下JSON字符串:
```json
{
"name": "张三",
"age": 20,
"address": {
"province": "广东",
"city": "深圳",
"district": "南山区"
},
"hobby": [
"篮球",
"游泳",
"旅游"
]
}
```
我们可以先定义一个Java对象来存储解析后的JSON数据:
```java
public class Person {
private String name;
private int age;
private Address address;
private List<String> hobby;
// 省略getter和setter方法
}
public class Address {
private String province;
private String city;
private String district;
// 省略getter和setter方法
}
```
然后使用Jackson库进行解析:
```java
ObjectMapper mapper = new ObjectMapper();
Person person = mapper.readValue(jsonStr, Person.class);
```
这样就可以得到一个Person对象,其中包含了解析后的JSON数据。
如果我们想要使用递归循环来解析JSON,可以定义一个通用的方法来处理各种类型的JSON数据:
```java
public static void parseJson(JsonNode node) {
Iterator<String> fieldNames = node.fieldNames();
while (fieldNames.hasNext()) {
String fieldName = fieldNames.next();
JsonNode fieldValue = node.get(fieldName);
if (fieldValue.isObject()) {
parseJson(fieldValue);
} else if (fieldValue.isArray()) {
for (JsonNode arrayNode : fieldValue) {
parseJson(arrayNode);
}
} else {
System.out.println(fieldName + ": " + fieldValue.asText());
}
}
}
```
然后使用该方法来解析JSON:
```java
ObjectMapper mapper = new ObjectMapper();
JsonNode rootNode = mapper.readTree(jsonStr);
parseJson(rootNode);
```
这样就可以递归循环地解析JSON了。当遇到对象或数组时,继续递归调用parseJson方法;当遇到基本类型时,直接输出该字段的名称和值。
阅读全文