有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java使用jackson向jsonobject添加键值对

我只需要从一个json节点复制元数据并将其添加到另一个json节点。我的问题是

       ObjectNode.put("key":"value") 

覆盖现有数据,但我需要添加它们

例如:

    {"metadata":{ "foo":1, "boo":2}} merged with {"metadata": {"ba":7}}

应该是

    {"metadata":{"foo":1, "boo":2,"ba":7}}

应该很简单,但我不明白:( 因此,任何帮助都将不胜感激


共 (2) 个答案

  1. # 1 楼答案

    你可以通过几种方式来实现

    首先,使用Jackson API;让我们调用node您想要修改的节点,newNode您想要合并的节点:

    final ObjectNode newMetadata = (ObjectNode) newNode.get("metadata");
    final ObjectNode metadata = (ObjectNode) node.get("metadata");
    
    metadata.putAll(newMetadata);
    

    第二,(抱歉:自我提升)你的目标JSON可以用作JSON Merge Patch;我开发的一个库使用了Jackson(注:2.2.x,而不是1.9.x),has support for it

    final JsonMergePatch patch = JsonMergePatch.fromJson(newNode);
    node = patch.apply(node);
    
  2. # 2 楼答案

    要将键值对添加到json对象中,只需获取一个映射并将键值条目放入其中。现在,您应该使用JSONER对象。通过使用jsoner的serialize方法,您可以直接将映射添加到json