使用jackson将键值对添加到jsonobject

时间:2014-03-20 09:57:21

标签: java json jackson

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

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

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

示例:

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

应该是

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

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

2 个答案:

答案 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。