【问题标题】:how to create insert new nodes in JsonNode?如何在 JsonNode 中创建插入新节点?
【发布时间】:2012-07-15 06:13:08
【问题描述】:

我创建了一个新的 JsonNode

JsonNode jNode = new ObjectCodec().createObjectNode();

对于这个节点,我如何在其中添加键值对,以便我可以用新值构造这个新节点?我在http://www.cowtowncoder.com/blog/archives/2011/08/entry_460.html 中读到的内容提到了使用

jNode.with("newNode").put("key1","value1");

但是查看 Jackson 的 JsonNode (v1.8) 的 API 并没有显示任何这样的方法。

【问题讨论】:

    标签: json jackson


    【解决方案1】:

    这些方法在ObjectNode中:划分使得大多数读取操作都包含在JsonNode中,但在ObjectNodeArrayNode中发生突变。

    请注意,您可以将第一行更改为:

    ObjectNode jNode = mapper.createObjectNode();
    // version ObjectMapper has should return ObjectNode type
    

    ObjectNode jNode = (ObjectNode) objectCodec.createObjectNode();
    // ObjectCodec is in core part, must be of type JsonNode so need cast
    

    【讨论】:

    • 感谢您的 StaxMan。我忘记提出的一个后续问题是如何将此节点插入现有节点?
    • 一般是通过ObjectNodeArrayNode的方法添加children; mapper 仅用于构建根节点。所以看看ObjectNode/ArrayNode中的putObjectaddObject方法
    【解决方案2】:

    我最近发现了更有趣的方法来创建任何 ValueNodeContainerNode (Jackson v2.3)。

    ObjectNode node = JsonNodeFactory.instance.objectNode();
    

    【讨论】:

    • 这并没有错。这就是单例实例的用途
    • 是的,但由于某种原因,我错过了一个实例方法而不是变量引用
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-07
    • 2017-02-25
    • 1970-01-01
    • 2021-09-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多