gpt4 book ai didi

java - 如何使用 Jackson 解析嵌套的 JSON(无论是递归还是迭代)?

转载 作者:行者123 更新时间:2023-12-05 08:57:46 25 4
gpt4 key购买 nike

我有一个示例 JSON 负载,如下所示:

 {"timestamp": 1427394360, "device": {"user-agent": "Mac OS 10.10.2 2.6 GHz Intel Core i7"}}

我解析它并使用它获取键/值对:

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

while (fieldsIterator.hasNext()) {
Map.Entry<String,JsonNode> field = fieldsIterator.next();
key = field.getKey();
value = field.getValue();
System.out.println("Key: " + key);
System.out.println("Value: " + value);
}

这个输出:

Key: timestamp
Value: 1427394360

Key: device
Value: {"user-agent": "Mac OS 10.10.2 2.6 GHz Intel Core i7"}

我如何设置它以便我可以解析出设备 key 中的键/值对成为:

Key: "user-agent"
Value: "Mac OS 10.10.2 2.6 GHz Intel Core i7"

而且,可能有 JSON 里面有更多嵌套的 JSON...这意味着一些 JSON 可能没有嵌套的 JSON 而有些可能有多个......

有没有一种方法可以使用 Jackson 递归解析来自 JSON 负载的所有键/值对?

感谢您花时间阅读本文...

最佳答案

如果值是容器(例如:数组或对象),您可以将代码放在方法中并进行递归调用。

例如:

public static void main(String[] args) throws IOException {
ObjectMapper mapper = new ObjectMapper();
final JsonNode rootNode = mapper.readTree(" {\"timestamp\": 1427394360, \"device\": {\"user-agent\": \"Mac OS 10.10.2 2.6 GHz Intel Core i7\"}}");
print(rootNode);
}

private static void print(final JsonNode node) throws IOException {
Iterator<Map.Entry<String, JsonNode>> fieldsIterator = node.getFields();

while (fieldsIterator.hasNext()) {
Map.Entry<String, JsonNode> field = fieldsIterator.next();
final String key = field.getKey();
System.out.println("Key: " + key);
final JsonNode value = field.getValue();
if (value.isContainerNode()) {
print(value); // RECURSIVE CALL
} else {
System.out.println("Value: " + value);
}
}
}

关于java - 如何使用 Jackson 解析嵌套的 JSON(无论是递归还是迭代)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29441863/

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