在 Java 中,如何组合两个 JSON 对象数组?

新手上路,请多包涵

我有几个字符串,每个字符串都包含对象数组的 JSON 表示形式。这是一个代码示例来说明,尽管这不是我的实际代码(传入的 JSON 字符串):

 String s1 = "[{name: "Bob", car: "Ford"},{name: "Mary", car: "Fiat"}]";
String s2 = "[{name: "Mack", car: "VW"},{name: "Steve", car: "Mercedes Benz"}]";

我需要将这两个 JSON 数组组合成一个大的 JSON 数组。我可以将其视为字符串操作问题并用逗号替换内部结束方括号,但这不是特别可靠(尽管我保证获得有效的 JSON)。

我宁愿将这两个字符串视为 JSON 数组,然后以某种方式将它们加在一起。这是一个很棒的计划,只是我不知道“不知何故”的部分。

有谁知道不需要构造 JSON 对象的 Java 对象表示的 Java 解决方案?

谢谢!

原文由 Paul 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 500
2 个回答

您实际上只有两个选择:解析 JSON(这总是涉及构建对象)或不解析 JSON。当然,不解析会更便宜。

乍一看,您将其视为字符串操作问题的想法听起来很脆弱,但我想得越多,就越觉得它很有道理。对于错误检测,您可以通过检查方括号轻松确认您确实在处理数组;之后,只需去掉结尾的括号,添加一个逗号,去掉开头的括号,然后添加“尾巴”就可以完美地工作了。我能想到的唯一例外是,如果任一数组为空,您应该只返回另一个 String 不变;同样,这很容易作为字符串进行检查。

我真的不认为有任何理由让它比这更复杂。

原文由 Ernest Friedman-Hill 发布,翻译遵循 CC BY-SA 3.0 许可协议

此代码将采用 sourceArray (s2),并将其附加到 destinationArray (s1) 的末尾:

 String s1 = "[{name: \"Bob\", car: \"Ford\"},{name: \"Mary\", car: \"Fiat\"}]";
String s2 = "[{name: \"Mack\", car: \"VW\"},{name: \"Steve\", car: \"Mercedes Benz\"}]";

JSONArray sourceArray = new JSONArray(s2);
JSONArray destinationArray = new JSONArray(s1);

for (int i = 0; i < sourceArray.length(); i++) {
    destinationArray.put(sourceArray.getJSONObject(i));
}

String s3 = destinationArray.toString();

原文由 Brian Klug 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题