我編寫的代碼采用包含 JSON 數據的字符串。我正在按 ID 對我的 JSON 對象數組進行排序。當我使用我的方法時,我得到這個異常:“org.json.JSONException: A JSONArray text must start with '[' 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();}
1 回答

炎炎設計
TA貢獻1808條經驗 獲得超4個贊
您所描述的代碼僅適用于如下所示的 json:
[
{ "useCaseId" : "4", ... },
{ "useCaseId" : "1", ... },
{ "useCaseId" : "a", ... },
...
]
如您所見,字符串以一個[字符開頭,就像所要求的異常一樣。
由于“大多數”jsons 以{我猜測您的 json 結構是不同的,然后您將需要相應地調整您的代碼。例如,如果您的 json 數組嵌入在“大多數”jsons 之類的對象中:
{
"useCases" : [
{ "useCaseId" : "4", ... },
{ "useCaseId" : "1", ... },
{ "useCaseId" : "a", ... },
...
]
}
那么你必須創建一個JSONObject obj = new JSONObject(jsonArrStr),然后JSONArray通過調用(JSONArray)obj.get("useCases").
添加回答
舉報
0/150
提交
取消