如何用Jackson将HashMap转换为JsonNode?

时间:2016-09-08 12:35:25

标签: java json jackson

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

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

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

2 个答案:

答案 0 :(得分:42)

以下将解决这个问题:

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

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

JsonNode jsonNode = mapper.valueToTree(map);

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

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

答案 1 :(得分:-1)

首先在JsonNode中转换地图:

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

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

myObjectNode.set("myMapName", jsonNodeMap);

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

ObjectNode myObjectNode = (ObjectNode) myJsonNode;