Как напрямую писать объект JSON (ObjectNode) из ObjectMapper в Jackson JSON?
Я пытаюсь вывести объект JSON в Jackson JSON. Однако я не смог получить объект JSON, используя следующий код.
public class MyClass {
private ObjectNode jsonObj;
public ObjectNode getJson() {
ObjectMapper mapper = new ObjectMapper();
// some code to generate the Object user...
mapper.writeValue(new File("result.json"), user);
jsonObj = mapper.createObjectNode();
return jsonObj;
}
}
После запуска программы файл result.json
содержит правильные данные JSON. Однако jsonObj
пуст (jsonObj={}
). Я посмотрел на Javadoc ObjectMapper, но не смог найти простой способ записать объект ObjectNode
(объект JSON в Джексоне). В ObjectMapper
нет метода, например:
public void writeValue(ObjectNode json, Object value)
Как записать в ObjectNode
непосредственно из ObjectMapper
?
Ответы
Ответ 1
Вместо этого вам нужно использовать ObjectMapper # valueToTree().
Это построит эквивалентное представление дерева JSON. Функционально такой же, как если бы сериализовать значение в JSON и анализировать JSON как дерево, но более эффективно.
Вам не нужно записывать объект User
в файл JSON, если это не требуется.
public class MyClass {
private ObjectNode jsonObj;
public ObjectNode getJson() {
ObjectMapper mapper = new ObjectMapper();
// some code to generate the Object user...
JsonNode jsonNode = mapper.valueToTree(user);
if (jsonNode.isObject()) {
jsonObj = (ObjectNode) jsonNode;
return jsonObj;
}
return null;
}
}