将java中的两个String对象与Jackson输出合并

Res*_*ter 4 java jackson

我想连接多个 Jackson 对象。我有两个像这样的 String 对象

{'Key1' : 'Value1' , 'Key2' : 'Value2'}
Run Code Online (Sandbox Code Playgroud)

和这个

{'Key3' : 'Value3' , 'Key4' : 'Value4'}
Run Code Online (Sandbox Code Playgroud)

结果必须是

{'Key1' : 'Value1' , 'Key2' : 'Value2' , 'Key3' : 'Value3' , 'Key4' : 'Value4'}
Run Code Online (Sandbox Code Playgroud)

我怎样才能在Java中做到这一点?

Man*_*dis 5

这可以通过 Jackson 将每个解析StringObjectNode(基本上是 JSON 的树表示)并与该setAll方法连接来实现。像这样的东西:

String json1 = "{\"Key1\": \"Value1\", \"Key2\": \"Value2\"}";
String json2 = "{\"Key3\": \"Value3\", \"Key4\": \"Value4\"}";

ObjectMapper mapper = new ObjectMapper();
ObjectNode node1 = (ObjectNode) mapper.readTree(json1);
ObjectNode node2 = (ObjectNode) mapper.readTree(json2);

JsonNode merged = node1.setAll(node2);

System.out.println(mapper.writeValueAsString(merged));
Run Code Online (Sandbox Code Playgroud)

文档ObjectNode::setAll