我有几个字符串,每个字符串包含一个对象数组的JSON表示.这是代码中的一个例子来说明,虽然这不是我的实际代码(传入JSON字符串):
String s1 = "[{name: "Bob", car: "Ford"},{name: "Mary", car: "Fiat"}]";
String s2 = "[{name: "Mack", car: "VW"},{name: "Steve", car: "Mercedes Benz"}]";
Run Code Online (Sandbox Code Playgroud)
我需要将这两个JSON数组合并为一个大型JSON数组.我可以将其视为一个字符串操作问题,并用逗号替换内端方括号,但这不是特别健壮(尽管我保证获得有效的JSON).
我宁愿将这两个字符串视为JSON数组,只是以某种方式将它们组合在一起.这是一个很棒的计划,除了我不知道"某种程度"的部分.
有没有人知道Java中的解决方案不需要构建JSON对象的Java Object表示?
谢谢!
Bri*_*lug 22
此代码将采用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();
Run Code Online (Sandbox Code Playgroud)
Ern*_*ill 11
你真的只有两个选择:解析JSON(总是涉及构造对象)或者不解析JSON.当然,解析不会更便宜.
乍一看,你将它视为字符串操作问题的想法可能听起来很脆弱,但我想的越多,它看起来就越有意义.对于错误检测,您可以通过检查方括号轻松确认您确实在处理数组; 之后,只需剥离结束括号,添加逗号,剥离开始括号,添加"尾部"应该完美无缺.我能想到的唯一例外是,如果任一数组为空,则应该只返回另一个不变的字符串; 再次,这很容易检查为一个字符串.
我真的不认为有任何理由让它变得更复杂.
我使用这段代码来组合两个 Json 数组。
String s1 = "[{name: \"Bob\", car: \"Ford\"},{name: \"Mary\", car: \"Fiat\"}]";
String s2 = "[{name: \"Mack\", car: \"VW\"},{name: \"Steve\", car: \"Mercedes Benz\"}]";
String s3=new String("");
s1=s1.substring(s1.indexOf("[")+1, s1.lastIndexOf("]"));
s2=s2.substring(s2.indexOf("[")+1, s2.lastIndexOf("]"));
s3="["+s1+","+s2+"]";
System.out.println(s3);
Run Code Online (Sandbox Code Playgroud)
这是我的解决方案,您可能想要合并两个以上的数组:
public static JSONArray mergeMultiJsonArray(JSONArray... arrays) {
JSONArray outArray = new JSONArray();
for (JSONArray array : arrays)
for (int i = 0; i < array.length(); i++)
outArray.put(array.optJSONObject(i));
return outArray;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
34200 次 |
| 最近记录: |