我试图将多个json对象连接到一个Json中。但是我遇到了在具有相同密钥的json对象上合并的问题。
如果我的jsons看起来像这样:
{K1 - V1}
{K2 - V2}
{K3 - V3}
{K1 - V4}
我想输出:
{K1 - [V1, V4], K2- V2, K3 - V3}
我可以将具有唯一键的Jsons与此代码合并:
private JSONObject mergeJsons(ArrayList<JSONObject> arr) {
JSONObject mergedObj = new JSONObject();
try {
for (JSONObject o : arr) {
Iterator i = o.keys();
String tmp_key;
while (i.hasNext()) {
tmp_key = (String) i.next();
mergedObj.put(tmp_key, o.get(tmp_key));
}
}
} catch (JSONException e) {
System.out.println("Json Exception");
return null;
}
return mergedObj;
}
但我试图让多值元素(即V1和V4)成为Json数组。有这么简单的方法吗?
谢谢!
答案 0 :(得分:0)
你做mergedObj.put
的地方你必须有逻辑来执行以下操作(伪代码)
v = mergedObj.get(key)
if (v == null)
mergedObj.put(key,value)
else
if (v is not a list)
temp = v
v = new list()
v.add(temp)
v.add(value)
这将为您留下一个地图,其中某些值是单个对象,而某些值是列表(数组)。您可能应该将其规则化,以便所有值都是数组。