如何从Jackson JSON中的ObjectMapper直接写入JSON对象(ObjectNode)?

时间:2013-08-19 18:18:27

标签: java json jackson

我正在尝试输出Jackson JSON中的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={})。我查找了ObjectMapper的Javadoc,但找不到写入ObjectNode(Jackson中的JSON对象)的简单方法。 ObjectMapper中没有类似以下内容的方法:

public void writeValue(ObjectNode json, Object value)

如何直接从ObjectNode写信给ObjectMapper

1 个答案:

答案 0 :(得分:22)

您需要改为使用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;
    }
}