简体   繁体   中英

How do i sort JSON Array in java

I have a JSON Array:

public JSONObject toJSONObject(DataJSONConverter dataJsonConverter) {
    JSONObject jsonResponse = new JSONObject();

    if (datas != null && dataJsonConverter != null) {
        JSONArray jsonDatas = new JSONArray();
        // for (Iterator<? extends Object> iter = datas.iterator(); iter.hasNext();) {
        // jsonDatas.put(dataJsonConverter.toJSONObject(iter.next()));
        // }

        for (Object iter : datas) {
            jsonDatas.put(dataJsonConverter.toJSONObject(iter));
        }

        jsonResponse.put("datas", jsonDatas);
        jsonResponse.put("count", count);

    }

Result in "datas" :

    [{"id":60685,"libelle":"BILAN3","typeAnomalie":"Trop de points 
invalides","dateDebut":"18\/07\/2013 00:00","numero":"1268"}

    {"id":60628,"libelle":"_fictif","typeAnomalie":"Trop de points 

invalides","dateDebut":"02\/06\/2013 00:00","numero":"1242"}

    {"id":14672,"libelle":"NAVIL 949","typeAnomalie":"D\u00e9passement","dateDebut":"13\/05\/2012 12:00","numero":"263"}]

How can I have an ascending order by "dateDebut" ?

Thx

JSONArray s are not sortable. You can extract the data into an ArrayList and then sort with a comparator and then put back into the JSONArray .

Boon (a Java open source lib) has what is currently the fastest JSON parser on the JVM (circa March 2014) and it provides support for sorting, filtering, searching (with indexes), JSON.

http://www.dzone.com/links/1123623.html (Path Expressions and JSON)

http://www.dzone.com/links/1123621.html (Sorting JSON)

http://www.dzone.com/links/1091051.html (Using the Parser)

http://www.dzone.com/links/java_boon_filtering_for_java_beans_json_and_java.html (Using the Index Search to do JSON ETL and searching and sorting)

http://www.dzone.com/links/java_boon_filtering_for_java_beans_json_and_java.html (Using Boon to filter JSON)

Here is a sorting example:

    Object jsonObject = fromJson(json);
    List<?> jsonDepartments = (List<?>) jsonObject;
    List<?> jsonEmployees = (List<Employee>) atIndex(jsonDepartments, "employees");

    sort(employees); //natural sort


    sort( employees, "lastName"); //sort by last name



    sort( departmentList );



    sort( employees, sortBy( "department.name" ),
                     sortByDescending( "lastName" ),
                     sortBy( "firstName" ) ); //well you get the idea



    sort(employees,
            sortBy("contactInfo.phoneNumbers[0]")); //you can even sort by an path expression




    sort( employees,
            sortByDescending("contactInfo.phoneNumbers[0]") ); //forward and backwards

Oh yeah... one more thing.. It is screaming fast. :)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM