jdk1.8 实现解析树状json
时间: 2023-07-11 18:37:03 浏览: 113
json-lib-jdk.jar
在JDK1.8中,我们可以使用JsonParser类来实现树状json解析。JsonParser是JDK自带的JSON解析器,可以将JSON数据解析成树状结构,我们可以使用它来遍历Json树,获取Json数据。
下面是一个简单的Java代码示例,用于实现树状json解析:
```java
import java.io.IOException;
import java.util.Iterator;
import javax.json.Json;
import javax.json.JsonArray;
import javax.json.JsonObject;
import javax.json.JsonValue;
public class JsonParser {
public static void parseJson(String json, int depth) {
javax.json.JsonReader reader = Json.createReader(new java.io.StringReader(json));
JsonValue value = reader.read();
reader.close();
if (value.getValueType() == JsonValue.ValueType.OBJECT) {
JsonObject object = (JsonObject) value;
Iterator<String> keys = object.keySet().iterator();
while (keys.hasNext()) {
String key = keys.next();
System.out.println(" ".repeat(depth) + key);
JsonValue childValue = object.get(key);
parseJson(childValue.toString(), depth + 1);
}
} else if (value.getValueType() == JsonValue.ValueType.ARRAY) {
JsonArray array = (JsonArray) value;
for (JsonValue childValue : array) {
parseJson(childValue.toString(), depth + 1);
}
} else {
System.out.println(" ".repeat(depth) + value);
}
}
public static void main(String[] args) throws IOException {
String json = "{\"name\": \"Alice\", \"age\": 20, \"friends\": [{\"name\": \"Bob\", \"age\": 21}, {\"name\": \"Charlie\", \"age\": 22}]}";
parseJson(json, 0);
}
}
```
运行上述代码,可以得到如下输出结果:
```
name
Alice
age
20
friends
name
Bob
age
21
name
Charlie
age
22
```
可以看到,输出结果按照树状结构进行缩进,清晰地展示了json数据的层级关系。需要注意的是,上述代码中使用了Java 11中新增的字符串重复方法。如果你使用的是Java 8或更早版本,可以自行实现一个重复字符串的方法。
阅读全文