按 ID 对 JSON 数组进行排序

我编写的代码采用包含 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();


}


慕妹3146593
浏览 166回答 1
1回答

炎炎设计

您所描述的代码仅适用于如下所示的 json:[&nbsp; { "useCaseId" : "4", ... },&nbsp; { "useCaseId" : "1", ... },&nbsp; { "useCaseId" : "a", ... },&nbsp;&nbsp;&nbsp; ...]如您所见,字符串以一个[字符开头,就像所要求的异常一样。由于“大多数”jsons 以{我猜测您的 json 结构是不同的,然后您将需要相应地调整您的代码。例如,如果您的 json 数组嵌入在“大多数”jsons 之类的对象中:{&nbsp; "useCases" : [&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{ "useCaseId" : "4", ... },&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{ "useCaseId" : "1", ... },&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{ "useCaseId" : "a", ... },&nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;...&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;]}那么你必须创建一个JSONObject obj = new JSONObject(jsonArrStr),然后JSONArray通过调用(JSONArray)obj.get("useCases").
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java