我需要从一个json节点复制元数据并将其添加到另一个节点。我的问题是
ObjectNode.put("key":"value")
覆盖现有数据,但我需要添加它们。
示例:
{"metadata":{ "foo":1, "boo":2}} merged with {"metadata": {"ba":7}}
应该是
{"metadata":{"foo":1, "boo":2,"ba":7}}
应该很简单,但我不明白:( 所以任何帮助都将不胜感激!
答案 0 :(得分:3)
您可以通过多种方式实现这一目标。
首先,使用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);
答案 1 :(得分:1)
要将键值对添加到json对象,您只需要获取MAP并将键值条目放入其中。现在您应该使用JSONER对象。通过使用jsoner的serialize方法,您可以直接将您的MAP添加到json。