java - 如何在 Json 树中按名称查找节点?

标签 java json jackson

我正在使用谷歌地理编码 API 进行反向地理编码。

结果以 Json 形式返回,我按以下方式解析 -

Map<String, Object> parsedJson = new ObjectMapper().readValue(
                    response.getEntity(String.class),
                    new TypeReference<Map<String, Object>>() {
                    });
List<Object> results = (List<Object>) parsedJson.get("results");
// From first result get geometry details
Map<String, Object> geometry = (Map<String, Object>) ((Map<String, Object>) results
                    .get(0)).get("geometry");

Map<String, Object> location = (Map<String, Object>) geometry
                    .get("location");

Map<String, Double> coordinates = new HashMap<String, Double>();
coordinates.put("latitude", (Double) location.get("lat"));
coordinates.put("longitude", (Double) location.get("lng"));

其中响应​​包含从服务器返回的 Json。

有没有可能不经过这一切就得到一个对位置节点的直接引用?例如。有没有像-

new ObjectMapper().readValue(json).findNodeByName("lat").getFloatValue();

我已经阅读了 Jackson Api 中关于 JsonNode 和 Tree 的文档,但似乎它们只有在您想遍历整棵树时才有用。

仅获取特定节点的最简单方法是什么?

最佳答案

+1 给 Michael Hixson,因为他指出了地理编码库。

但是,在深入研究文档后,我终于找到了解决方案 -

ObjectMapper mapper = new ObjectMapper(); 

JsonNode rootNode = mapper.readTree(mapper.getJsonFactory()
                        .createJsonParser(response.getEntity(String.class)));

rootNode.findValue("lat").getDoubleValue();

关于java - 如何在 Json 树中按名称查找节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10317549/

相关文章:

java - JSON:InvalidFormatException:无法从字符串值构造 int 实例

java - 如何在网页中嵌入 Java 小程序?

Java 如何使用for循环填充年份和月份列表?

java - JFrame 根本不工作

javascript - 在 create-react-app + typescript 中导入静态 JSON

java - 具有自定义转义的 Jackson Object Mapper 对字段长度有限制

java - JNI GetDirectBufferAddress 与 ByteBuffer.array()

javascript - JSON 与存储设置的对象

javascript - 按初始值或顶级值进行 JSON 查找

json - 使用Jackson来流解析Json对象数组