【问题标题】:How to convert HashMap to JsonNode with Jackson?如何使用 Jackson 将 HashMap 转换为 JsonNode?
【发布时间】:2017-01-16 09:29:52
【问题描述】:

我有一个HashMap 对象,我想使用com.fasterxml.jackson.databind.ObjectMapper 将其转换为JsonNode 树。最好的方法是什么?

我找到了以下代码,但由于我对Jackson API不太了解,不知道是否有更好的方法。

mapper.reader().readTree(mapper.writeValueAsString(hashmap))

【问题讨论】:

  • Hashmap 无法实现的 JsonNode 实例需要什么?
  • 我认为你应该循环和手动转换它:)......当你尝试通过自动功能转换时,有些人认为是错误的,因为你的对象可能没有正确使用所需的功能,,

标签: java json jackson


【解决方案1】:

以下方法可以解决问题:

JsonNode jsonNode = mapper.convertValue(map, JsonNode.class);

或者使用comments中指出的更优雅的解决方案:

JsonNode jsonNode = mapper.valueToTree(map);

如果您需要将jsonNode 写为字符串,请使用:

String json = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(jsonNode);

【讨论】:

【解决方案2】:

首先在 JsonNode 中转换您的地图:

ObjectMapper mapper = new ObjectMapper();
JsonNode jsonNodeMap = mapper.convertValue(myMap, JsonNode.class);

然后使用 set 方法将此节点添加到您的 ObjectNode 中:

myObjectNode.set("myMapName", jsonNodeMap);

要从 JsonNode 转换为 ObjectNode,请使用:

ObjectNode myObjectNode = (ObjectNode) myJsonNode;

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2014-05-23
  • 1970-01-01
  • 2017-08-31
  • 1970-01-01
  • 2018-03-13
  • 2013-05-23
  • 1970-01-01
相关资源
最近更新 更多