我有两个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,因为我没有批准使用相同的。
1.我尝试使用List<JSONObject> listObj = objectMapper.readValue(jsonOneString, new TypeReference<List<JSONObject>>(){});
,但遇到未知属性异常。
1.我尝试了JsonNode node = objectMapper.readTree(jsonOneString);
,但无法进一步使用此方法。
我知道我在这里所做的是非常低效的,所以寻找方法,将使用没有实体类,最小的新对象创建和最小的循环。
更新:我更新了下面的代码,做了一点小小的修改:
if (json1elem.get("title")!=null
&& json2elem.get("title")!=null
&& json1elem.get("title").equals(json2elem.get("title"))) {
//
}
1条答案
按热度按时间nfzehxib1#