Как конвертировать HashMap в JsonNode с помощью Jackson?

У меня есть объект HashMap, который я хочу преобразовать в дерево JsonNode, используя com.fasterxml.jackson.databind.ObjectMapper. Каков наилучший способ сделать это?

Я нашел следующий код, но так как я плохо знаю API Jackson, мне интересно, есть ли более эффективные способы.

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

Ответ 1

Следующее выполнит трюк:

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

Или используйте более элегантное решение, указанное в комментариях:

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);

Затем добавьте этот узел в ваш ObjectNode с помощью метода set:

myObjectNode.set("myMapName", jsonNodeMap);

Для преобразования из JsonNode в ObjectNode используйте:

ObjectNode myObjectNode = (ObjectNode) myJsonNode;