gpt4 book ai didi

java - Android 中的通用 JSON 解析

转载 作者:太空宇宙 更新时间:2023-11-04 12:51:32 24 4
gpt4 key购买 nike

我有一个 JSON

 {
"info": {
"info1": {
"age": "30",
"city": "New york"
},
"info2": {
"sleeping": "false"
},
"info3": {
"shopping": "false",
"eating": "Buger"
}
},
"data": [{
"name": "XYZ",
"email": "xyz@123.com"
}, {
"name": "ABC",
"email": "ABC@123.com"
}]
}

我需要制作一个通用的解析器,并提取对象、数组和单个 key 对文本的名称。我将使用这些值生成一个查询。只有“info”和“data”标签是固定的,其余的都可以更改。我们可以有空的“info”或不同的子项,例如“info1”,“info2”....“info5”...同样,单个“info”子项可以有多个子项,例如“info1”可以有 2 个条目或 4 个条目。

我尝试使用 jackson 库,但无法遍历完整的 json。

更新:使用 jackson 2.7.2(最新)使用以下代码

    JsonFactory factory = new JsonFactory();

ObjectMapper mapper = new ObjectMapper(factory);
JsonNode rootNode = mapper.readTree(jsonString);

Iterator<Map.Entry<String, JsonNode>> fieldsIterator = rootNode.fields();
while (fieldsIterator.hasNext()) {

Map.Entry<String, JsonNode> field = fieldsIterator.next();
System.out.println("Key: " + field.getKey() + "\tValue:" + field.getValue());
}

它迭代“info”和“data”键。需要迭代完整的json。

最佳答案

JsonNode 可用于解析整个 jsonObject。 JsonNode get方法可用于遍历给定的JSON。

例如:

ObjectMapper mapper = new ObjectMapper();
JsonNode rootNode = mapper.readTree(data);

JsonNode infoNode = rootNode.get("info");

Iterator<Map.Entry<String, JsonNode>> infoFieldsIterator = infoNode.fields();
while (infoFieldsIterator.hasNext()) {

Map.Entry<String, JsonNode> field = infoFieldsIterator.next();
System.out.println("Key: " + field.getKey() + "\tValue:" + field.getValue());
}

JsonNode dataNode = rootNode.get("data");

for (int i = 0; i < dataNode.size(); i++) {
JsonNode dataNodeNum = dataNode.get(i);
Iterator<Map.Entry<String, JsonNode>> dataFieldsIterator = dataNodeNum.fields();
while (dataFieldsIterator.hasNext()) {
Map.Entry<String, JsonNode> field = dataFieldsIterator.next();
System.out.println("Key: " + field.getKey() + "\tValue:" + field.getValue());
}
}

了解更多信息请check here .

关于java - Android 中的通用 JSON 解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35788188/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com