gpt4 book ai didi

java - 按 ID 对 JSON 数组排序

转载 作者:行者123 更新时间:2023-11-30 05:58:04 32 4
gpt4 key购买 nike

我编写的代码采用包含 JSON 数据的字符串。我正在按 ID 对 JSON 对象数组进行排序。当我使用我的方法时,我收到此异常:“org.json.JSONException:JSONArray 文本必须以 '[' at 1 [character 2 line 1] 开头”。

我在这里缺少什么以及如何解决它?

private static void ResortJsonByUseCaseID( String jsonArrStr )
{
JSONArray jsonArr = new JSONArray(jsonArrStr);
JSONArray sortedJsonArray = new JSONArray();

List<JSONObject> jsonValues = new ArrayList<JSONObject>();
for (int i = 0; i < jsonArr.length(); i++) {
jsonValues.add(jsonArr.getJSONObject(i));
}

java.util.Collections.sort( jsonValues, new java.util.Comparator<JSONObject>() {
private static final String KEY_NAME = "useCaseId";

@Override
public int compare(JSONObject a, JSONObject b) {
String valA = new String();
String valB = new String();

try {
valA = (String) a.get(KEY_NAME);
valB = (String) b.get(KEY_NAME);
}
catch (JSONException e) {
//do something

int tal = 9;
}

return valA.compareTo(valB);

}
});

for (int i = 0; i < jsonArr.length(); i++) {
sortedJsonArray.put(jsonValues.get(i));
}

jsonArrStr = sortedJsonArray.toString();

}

最佳答案

您描述的代码仅适用于如下所示的 json:

[
{ "useCaseId" : "4", ... },
{ "useCaseId" : "1", ... },
{ "useCaseId" : "a", ... },
...
]

如您所见,字符串以 [ 字符开头,就像所要求的异常一样。

由于“大多数”json 以 { 开头,我猜测您的 json 结构不同,然后您需要相应地调整代码。例如,如果您的 json 数组嵌入到像“大多数”json 一样的对象中:

{
"useCases" : [
{ "useCaseId" : "4", ... },
{ "useCaseId" : "1", ... },
{ "useCaseId" : "a", ... },
...
]
}

那么您必须创建一个 JSONObject obj = new JSONObject(jsonArrStr) ,然后通过调用 (JSONArray)obj.get("获取 JSONArray用例”)

关于java - 按 ID 对 JSON 数组排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52811454/

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