如何排序/订购JSON输出?

时间:2013-01-30 13:18:37

标签: android json sorting

我有一个JSON循环,我能够在循环中获取对象,但问题是我的输出不按顺序排列:

我的预期输出是:

Menu Id 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23

但我得到的结果如下:

Menu Id: 19,18,23,16,17,14,15,12,13,21,20,22,4,3,11,2,1

我怎样才能按照预期的方式对其进行排序?

           JSONArray values = menuObject.toJSONArray(names);
           for (int i = 0; i< values.length(); i++) {
                        JSONObject json2 = (JSONObject) values.getJSONObject(i);
                        //int menu_id = json2.getInt("menu_id");
                        menu_id = json2.getString("menu_id");
                        int m_id = Integer.parseInt(menu_id);
                        if (json2.has("menu_parent")) {
                           menu_parent = json2.getString("menu_parent");    
                        }
            if (m_id < 0) {

               //
             } else {
               id = id + menu_id + ",";
               int menu_category = Integer.parseInt(menu_parent);
               System.out.println("Menu Id" + id);
                   if (json2.has("menu_name")) {
                     menu_list = json2.getString(KEY_MENU).trim();
                     System.out.println("Menu List" +menu_title);
                     menu_title = menu_title + menu_list + ",";
                   }
               }

           }

2 个答案:

答案 0 :(得分:1)

我认为你可以这样排序:

Collections.sort("your data", new Comparator<Item>() {
        public int compare(Item i1, Item i2) {
            return i1.getCaption().compareTo(i2.getCaption());
        }
    });

完成此操作后,应将其整理出来。

答案 1 :(得分:0)

试试这个:

String menuids = "19,18,23,16,17,14,15,12,13,21,20,22,4,3,11,2,1";
        String[] ids = menuids.split(",");

                Integer[] result = new Integer[ids.length];
                for (int i = 0; i < ids.length; i++) {
                    result[i] = Integer.parseInt(ids[i].trim());
                }


                Collections.sort(Arrays.asList(result));

                StringBuilder sb = new StringBuilder();
                for (int i = 0; i < result.length; i++) {
                    Integer intValue = result[i];
                    sb.append(intValue);
                    if (i < result.length - 1) {
                        sb.append(", ");
                    }
                }

        String finaldata = sb.toString();

        System.out.println(finaldata);