如何遍历JsonNode以获取键值对?附示例JSON结构
遍历JsonNode获取键值对的方法
以Jackson库的JsonNode为例,你可以按以下步骤遍历results节点下的所有键值对:
1. 获取目标子节点
先从根JsonNode中取出results对应的子节点,同时做好非空和类型校验:
JsonNode rootNode = ...; // 已解析得到的根节点 JsonNode resultsNode = rootNode.get("results"); // 确保results节点存在且是对象类型 if (resultsNode != null && resultsNode.isObject()) { // 遍历逻辑写在这里 }
2. 遍历键值对
方式一:迭代器循环
通过fields()方法获取键值对迭代器,逐个处理:
Iterator<Map.Entry<String, JsonNode>> fieldIterator = resultsNode.fields(); while (fieldIterator.hasNext()) { Map.Entry<String, JsonNode> entry = fieldIterator.next(); String key = entry.getKey(); // 根据值的实际类型选择转换方法,这里示例是字符串类型 String value = entry.getValue().asText(); // 替换为你的业务逻辑 System.out.printf("键:%s,值:%s%n", key, value); }
方式二:Lambda表达式简化
用forEachRemaining配合Lambda表达式,代码更简洁:
resultsNode.fields().forEachRemaining(entry -> { String key = entry.getKey(); String value = entry.getValue().asText(); System.out.printf("键:%s,值:%s%n", key, value); });
注意事项
- 如果值的类型不确定(比如可能是数字、布尔值或嵌套对象),可以先通过
entry.getValue().isString()、entry.getValue().isNumber()等方法判断类型,再调用对应的asXxx()方法转换。 - 如果
results节点可能是数组类型,需要改用elements()方法遍历数组元素。
内容的提问来源于stack exchange,提问作者Tanu
相关产品推荐
相关产品推荐

