通过递归的方式进行解析,将嵌套的JSON数据解析为只有一层的大JSON
注意:数据里面不能有重复的 数据,或者可以在else里面做一个判断,如果json里面有了,则做出对应的处理,手动改key或者抛弃。
public JSONObject analysisJSON(JSONObject data,JSONObject result){
Set<String>parentKey = data.keySet();
for(String key :parentKey){
Object sunData = data.get(key);
if(sunData instanceof JSONObject){
analysisJSON(sunData,result);
}else{
result.put(key,sunData)
return result;
解析不知道层数的JSON通过递归的方式进行解析,将嵌套的JSON数据解析为只有一层的大JSON注意:数据里面不能有重复的 数据,或者可以再else里面做一个判断,如果json里面有了,则做出对应的处理,手动改key或者抛弃。// data 需要解析的数据, result解析后数据放入该json里面public JSONObject analysisJSON(JSONObject data,JSONObject result){ Set<String>parentKey = data.k
JSON.parseArray(String) 将Json字符串解析为JsonArray对象
parseObject(String) 将Json字符串解析为JsonObject对象
JsonObject继承JSON,所以Json有的方法,Json...
将json字符串递归解析成类列表需求上代码解析器类类型枚举类实体测试类打完收功
将json字符串的所有层都解析出来,得到每一层的信息,包括:层级、每层的值、当前类型(JSONObject/JSONArray/Other)、父key、父类型 (JSONObject/JSONArray/Other)。
解析器类
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fa
Json::Value root;
Json::Reader reader;
const char* s = "{\"uploadid\": \"UP000000\",\"code\": 100,\"msg\": \"\",\"files\": \"\"}";
if(!reader.parse(s, root))
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jac
在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方法;当遇到基本类型时,直接输出该字段的名称和值。