我如何在java中排序JSON数组

时间:2013-07-18 13:18:58

标签: java json sorting arrays

我有一个JSON数组:

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);

    }

结果为“数据”:

    [{"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"}]

如何通过“dateDebut”升序?

THX

2 个答案:

答案 0 :(得分:1)

JSONArray不可排序。您可以将数据提取到ArrayList,然后使用comparator排序,然后重新放入JSONArray

答案 1 :(得分:0)

Boon(一个Java开源库)拥有目前JVM上最快的JSON解析器(大约在2014年3月),它提供了对排序,过滤,搜索(带索引),JSON的支持。

http://www.dzone.com/links/1123623.html(路径表达式和JSON)

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

http://www.dzone.com/links/1091051.html(使用解析器)

http://www.dzone.com/links/java_boon_filtering_for_java_beans_json_and_java.html(使用索引搜索执行JSON ETL以及搜索和排序)

http://www.dzone.com/links/java_boon_filtering_for_java_beans_json_and_java.html(使用Boon过滤JSON)

这是一个排序示例:

    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
噢,是的......还有一件事......快速尖叫。 :)