我有一个包含 5 个不同 JSONObject 的 JSONArray,并且这 5 个 JSONObject 中的每一个都有一个标识符字符串值。这五个值是“aa”、“bb”、“erer”、“cc”、“gg”。我的要求是将标识符为“erer”的 JSONObject 放在第一位,并且以下 JSONObject 可以按任何顺序排列。 json 是:
{
"obj":[
{"identifier":"aa",},
{"identifier":"bb",},
{"identifier":"erer",},
{"identifier":"cc",},
{"identifier":"gg",}
]
}
最终结果必须是“erer”、“aa”、“bb”、“cc”、“gg”,我需要在一个循环中执行此操作。
我可以通过两个循环来完成此操作。
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject j = jsonArray.getJSONObject(i);
if(j.getString("identifier").equals("erer")) {
sortedJson.put(joPayLoad);
}
}
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject j = jsonArray.getJSONObject(i);
if(!j.getString("identifier").equals("erer")) {
sortedJson.put(joPayLoad);
}
}
但是 JsonArray 也可能有 10,000 个 JSONObject。因此,这个“两个 for 循环”会导致性能滞后。因此,请帮助我在一个循环中实现上述要求。 提前致谢!
最佳答案
鉴于 JsonArray
是一个列表 ( source ),您可以尝试将值与 erer
交换为新的第一个元素:
for (int i = 0; i < jsonArray.length(); i++) {
JsonValue j = jsonArray.get(i);
if(j.getString("identifier").equals("erer")) {
JsonValue tmp = jsonArray.get(0);
jsonArray.set(0, j);
jsonArray.set(i, tmp);
break;
}
}
因为我没有安装 EE,所以没有尝试过,但也许你可以使用提供的方法使其工作。
关于java - 使用单个 for 循环对 JSONArray 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56718447/