我想按一个值对JSONArray进行排序并返回已排序的数组

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我想按一个值对JSONArray进行排序并返回已排序的数组相关的知识,希望对你有一定的参考价值。

这是我的第一个使用JSON的程序。它几乎完成,只需要按“updated_at”值排序,然后以“name”+“updated_at”的形式返回排序结果。任何人都可以帮我这个/写代码?我怎样才能做到这一点?

public class Main 

public static void main(String[] args) throws Exception 

    ArrayWithAllRepos arrayWithAllRepos = new ArrayWithAllRepos();

    String dataFromPage1 = URLReader.readUrl(AllegroURL.URL_1);
    String dataFromPage2 = URLReader.readUrl(AllegroURL.URL_2);
    String dataFromPage3 = URLReader.readUrl(AllegroURL.URL_3);

    JSONArray jsonArrayWithDataFromPage1 = new JSONArray(dataFromPage1);
    JSONArray jsonArrayWithDataFromPage2 = new JSONArray(dataFromPage2);
    JSONArray jsonArrayWithDataFromPage3 = new JSONArray(dataFromPage3);

    arrayWithAllRepos.addToJsonToArray(jsonArrayWithDataFromPage1);
    arrayWithAllRepos.addToJsonToArray(jsonArrayWithDataFromPage2);
    arrayWithAllRepos.addToJsonToArray(jsonArrayWithDataFromPage3);

    arrayWithAllRepos.printArray(arrayWithAllRepos.getJsonArray());

public class AllegroURL 

public static final String URL_1 = "https://api.github.com/users/allegro/repos?pagelen=1000&page=1";
public static final String URL_2 = "https://api.github.com/users/allegro/repos?pagelen=1000&page=2";
public static final String URL_3 = "https://api.github.com/users/allegro/repos?pagelen=1000&page=3";

答案

我不知道类ArrayWithAllRepos,但你可以创建Comparator获取两个json对象,并将它们与这个值进行比较(你可以在google中看到很多例子,这里是一个https://www.geeksforgeeks.org/comparator-interface-java/

并在集合上使用.stream().map()方法,以便更改输出(再次,你可以在google中看到很多例子,这里是一个https://javarevisited.blogspot.com/2018/05/java-8-filter-map-collect-stream-example.html

如果你的集合不支持stream(),你可以做一个简单的for,并用你的值创建新的json。

以上是关于我想按一个值对JSONArray进行排序并返回已排序的数组的主要内容,如果未能解决你的问题,请参考以下文章

如何按值对 LevelDB 进行排序

在PHP中按数组键的值对字典中的数组进行排序

按属性值对对象列表进行排序[重复]

按值对 JSON 进行排序 [重复]

Android如何对JSONObjects的JSONArray进行排序

如何按 Lua 中的值对表进行排序?