我有两个JSON字符串,本质上是JSONObject数组。两个JSON字符串的结构和键如下:
JSON-1:
[
{
"title": "ABC",
"edition": 7,
"year": 2011
},
{
"title": "DEF",
"edition": 2,
"year": 2012
},
{
"title": "XYZ",
"edition": 3,
"year": 2013
}
]和,JSON-2:
[
{
"title": "ABC",
"price": "20"
},
{
"title": "DEF",
"price": "20"
},
{
"title": "XYZ",
"price": "20"
}
]这两个JSON都有一个公共密钥"title",我希望在此基础上合并这两个JSON,要么将JSON-2值合并到JSON-1中,要么创建一个具有合并结果的JSON对象。
合并的结果如下所示:
[
{
"title": "ABC",
"edition": 7,
"year": 2011,
"price": "20"
},
{
"title": "DEF",
"edition": 2,
"year": 2012
"price": "20"
},
{
"title": "XYZ",
"edition": 3,
"year": 2013
"price": "20"
}
]如何通过最小循环和最小对象创建来实现这一点?我也不能使用实体/模型类。这样做的目的是不创建任何模型类。
注意:我不能使用Gson,因为我没有批准使用Gson。
List<JSONObject> listObj = objectMapper.readValue(jsonOneString, new TypeReference<List<JSONObject>>(){});,但是我得到了一个未知的属性异常。JsonNode node = objectMapper.readTree(jsonOneString);,但我不能再继续下去了。我知道我在这里做的事情效率很低,所以寻找不使用实体类、最小新对象创建和最小循环的方法。敬请指教。
更新:我稍微修改了一下下面的代码:
if (json1elem.get("title")!=null
&& json2elem.get("title")!=null
&& json1elem.get("title").equals(json2elem.get("title"))) {
//
}发布于 2022-09-08 17:25:15
JsonNode json1 = objectMapper.readTree(jsonOneString);
JsonNode json2 = objectMapper.readTree(jsonTwoString);
for (JsonNode json1elem : json1) {
for (JsonNode json2elem : json2) {
if (json1elem.get("title").equals(json2elem.get("title"))) {
((ObjectNode) json1elem).setAll((ObjectNode) json2elem);
break;
}
}
}
System.out.println(json1.toPrettyString());https://stackoverflow.com/questions/73652218
复制相似问题