簡體   English   中英

排序JsonObjects Java的JsonArray

[英]Sort JsonArray of JsonObjects Java

我正在使用Gson庫。我需要根據JsonObjects中的鍵對JsonObjects的JsonArray進行排序。

[{"AS1000":["5.1","0","false","false",null,null],"AS2000":["-","-","-","-","-","-"],"Date":"2014-03-02 08:07:00.0"},
{"AS1000":["5.0","0","false","false",null,null],"AS2000":["-","-","-","-","-","-"],"Date":"2014-03-02 17:58:00.0"},
{"AS1000":["5.0","0","false","false",null,null],"AS2000":["-","-","-","-","-","-"],"Date":"2014-03-30 14:59:00.0"},
{"AS1000":["-","-","-","-","-","-"],"AS2000":["27.0","0","true","false","30.0 - 20.0",null],"Date":"2014-03-30 06:03:00.0"},
{"AS1000":["-","-","-","-","-","-"],"AS2000":["15.0","0","false","false",null,null],"Date":"2014-03-02 02:00:00.0"},
{"AS1000":["5.0","0","false","false",null,null],"AS2000":["-","-","-","-","-","-"],"Date":"2014-03-14 20:06:00.0"},
{"AS1000":["5.0","0","false","false",null,null],"AS2000":["-","-","-","-","-","-"],"Date":"2014-03-30 07:00:00.0"},
{"AS1000":["-","-","-","-","-","-"],"AS2000":["61.0","0","false","false",null,null],"Date":"2014-03-17 19:07:59.0"}]

是否可以根據對象中的鍵(例如AS2000 [0]或日期)進行排序?

我已經這樣嘗試過布恩

        JsonArray listLoggerDataObj=gson.fromJson(listloggerdata, JsonArray.class);
        List<JsonObject> list=new ArrayList<JsonObject>();
         for (JsonElement entry : listLoggerDataObj) {
         list.add(entry.getAsJsonObject());
         }


        sort(list,"Date"); /*list ,key used to sort*/
        System.out.println("printing sorted" +list.toString());

但是它會打印相同的輸入內容。

謝謝,

wr

找到一個解決方案。使用Boon的jsonParser從字符串(不是Gson的fromJson())構造Json,然后將其轉換為List,最后應用sort(),問題已修復。

  Object jsonObject = fromJson(listloggerdata);
  List<?> jsonDepartments = (List<?>) jsonObject;

  sort(jsonDepartments,sortBy("Date"));

  System.out.println("printing sorted" +jsonDepartments.toString());

排序結果是

[{"AS2000":["15.0","0","false","false",null,null],"AS1000":["-","-","-","-","-","-"],"Date":"2014-03-02 02:00:00.0"},
 {"AS2000":["-","-","-","-","-","-"],"AS1000":["5.1","0","false","false",null,null],"Date":"2014-03-02 08:07:00.0"},
 {"AS2000":["-","-","-","-","-","-"],"AS1000":["5.0","0","false","false",null,null],"Date":"2014-03-02 17:58:00.0"},
 {"AS2000":["-","-","-","-","-","-"],"AS1000":["5.0","0","false","false",null,null],"Date":"2014-03-14 20:06:00.0"},
 {"AS2000":["61.0","0","false","false",null,null],"AS1000":["-","-","-","-","-","-"],"Date":"2014-03-17 19:07:59.0"},
 {"AS2000":["27.0","0","true","false","30.0 - 20.0",null],"AS1000":["-","-","-","-","-","-"],"Date":"2014-03-30 06:03:00.0"},
 {"AS2000":["-","-","-","-","-","-"],"AS1000":["5.0","0","false","false",null,null],"Date":"2014-03-30 07:00:00.0"},
 {"AS2000":["-","-","-","-","-","-"],"AS1000":["5.0","0","false","false",null,null],"Date":"2014-03-30 14:59:00.0"}]

您甚至可以像這樣基於數組索引進行排序

 sort(jsonDepartments,sortByDesending("AS2000[0]"));

希望這可以幫助某人。

我也使用了Boon庫,但出現錯誤“ java.lang.NoClassDefFoundError org.boon.sort.Sort”

請告訴我我做錯了什么。

            this.list = global.getPartyPartneruserlistwithstatus().getJSONObject(0).getJSONArray("in_list");


            List<JSONObject> list1 = new ArrayList<JSONObject>();
            for (int i = 0; i < global.getPartyPartneruserlistwithstatus().getJSONObject(0).getJSONArray("in_list").length(); i++) {
                    list1.add(list.getJSONObject(i));
            }

                sort(list1,"age");

並且列表中包含JSONARRAY

[{“用戶名:” Navdeep Singh Sandhu“,”家鄉“:” chandigarh“,” request_id“:” 2“,” social_id“:” 100002878462251“,” social_provider“:” facebook“,”年齡“:25} ,{{用戶名:“ HarPreet Kaur”,“家鄉”:“ chandigarh”,“ request_id”:“ 4”,“ social_id”:“ 100002029425217”,“ social_provider”:“ facebook”,“ age”:23}]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM