Как конвертировать 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;