12

我正在尝试输出到杰克逊 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直接写入 from ObjectMapper

4

1 回答 1

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;
    }
}
于 2013-08-19T21:39:21.100 回答