Как напрямую писать объект 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;
    }
}