gpt4 book ai didi

Java:将两个json对象与主键合并在一起

转载 作者:搜寻专家 更新时间:2023-11-01 03:01:56 24 4
gpt4 key购买 nike

假设我在内存中有两个 JSONObjects 数组,每个对象都有一个在两个数组中相似的键:

数组 1

[
{
"name": "Big Melons Co.",
"location": "Inner City Dubai"
"id": "1A"
},
{
"name": "Pear Flavored Juices Ltd",
"location": "Seychelles"
"id": "2A"
},
{
"name": "Squeeze My Lemons LLC",
"location": "UK"
"id": "3A"
}, {other JSON Objects...} ]

数组 2

[
{
"acceptsCard": "true"
"id": "1A"
},
{
"acceptsCard": "false"
"id": "2A"
},
{
"acceptsCard": "false"
"id": "3A"
}, {other JSON Objects...} ]

现在,我想根据主键“id”将两个数组合并在一起,以便它们在我的服务器端成为一个数组,然后将结果发送回我的前端——生成的对象数组列表应该如下所示:

合并数组(结果)

  [
{
"name": "Great Juice Co.",
"location": "Inner City Dubai"
"acceptsCard": "true"
"id": "1A"
},
{
"name": "Pear Flavored Juices Ltd",
"location": "Seychelles"
"acceptsCard": "false"
"id": "2A"
},
{
"name": "Squeeze My Lemons LLC",
"location": "UK"
"acceptsCard": "false"
"id": "3A"
}, {other JSON Objects...} ]

我怎样才能有效地做到这一点?

我可以想到一种非常低效的方法来做到这一点(我很害怕实现这个)——我会遍历数组 1 或 2 中的每个项目,并对“id”中的字符串使用 equal() 方法字段看两者是否匹配。如果它们匹配,我将创建一个新的 JSONObject 以包含数组 1 和 2 中的字段。

最佳答案

我的 Java 有点生疏,但我会使用 map 。

List<JSONObject> objectsA = ... ;
List<JSONObject> objectsB = ... ;

Map entries = new HashMap<String, JSONObject>();
List<JSONObject> allObjects = new ArrayList<JSONObject>();
allObjects.addAll(objectsA);
allObjects.addAll(objectsB);

for (JSONObject obj: allObjects) {
String key = obj.getString("id");
JSONObject existing = entries.get(key);
if (existing == null) {
existing = new JSONObject();
entries.put(key, existing);
}

for (String subKey : obj.keys()) {
existing.put(subKey, obj.get(subKey));
}
}

List<JSONObject> merged = entries.values();

这比两个嵌套循环更有效,并且仍有改进的空间。

编辑:对外部文档和相关答案的引用。

关于Java:将两个json对象与主键合并在一起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32850554/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com