【问题标题】:How to directly write to a JSON object (ObjectNode) from ObjectMapper in Jackson JSON?如何在 Jackson JSON 中从 ObjectMapper 直接写入 JSON 对象(ObjectNode)?
【发布时间】:2013-08-19 18:18:26
【问题描述】:

我正在尝试输出到 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)

如何直接从ObjectMapper 写信给ObjectNode

【问题讨论】:

    标签: java json jackson


    【解决方案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;
        }
    }
    

    【讨论】:

    • 正确。如果需要输出到文件,JsonNode可以直接用writeValue(file, jsonNode);写入文件
    • 知道如何使用杰克逊发布书面价值的数量吗?
    猜你喜欢
    • 1970-01-01
    • 2022-01-10
    • 1970-01-01
    • 2013-10-16
    • 1970-01-01
    • 2014-09-18
    • 2014-05-23
    • 1970-01-01
    相关资源
    最近更新 更多