java - 根据多个值对 Json 进行排序

标签 java json sorting gson

在 Java 中,我想根据多个值对 JSON 对象(不是 JSON 数组)进行排序。下面是输入 JSON 文件内容的示例。

{"Name":"John","Age":27,"Gender":"Male"}
{"Name":"Lynda","Age":42,"Gender":"Female"}
{"Name":"Peter","Age":34,"Gender":"Male"}
{"Name":"Sheebha","Age":23,"Gender":"Female"}

我需要按年龄和性别对这些对象进行排序。我需要如下所示的输出。

{"Name":"John","Age":27,"Gender":"Male"}
{"Name":"Peter","Age":34,"Gender":"Male"}
{"Name":"Sheebha","Age":23,"Gender":"Female"}
{"Name":"Lynda","Age":42,"Gender":"Female"}

我正在使用 GSON 来解析 JSON。我只是想要一种方法来做到这一点。我能够找到对 JSON 数组进行排序的解决方案,但找不到针对对象的解决方案。

另外,让我知道解析 JSON 的最佳 API; GSON 或 JSON.simple 或其他任何东西。

最佳答案

您的 POJO 对象中本质上应该有一个像这样的比较器方法。

public int compareTo(Object obj) {
    if(obj == null)
            return 1;
    else if (obj instanceof Person)
    {
        Person p2 = (Person) obj;
        if(this.gender.compareTo(p2.gender) < 0)
            return 1;
        else if(this.gender.compareTo(p2.gender) == 0)
            return this.age.compareTo(p2.age);
        else
            return -1;
    }
    else return 1;

}

它将首先根据性别排序,然后根据年龄排序,这是我从您的示例输出中了解到的。

从 JSON 对象转换为 POJO 对象,如下所示。

List<Person> personList = new ArrayList<>();
Person p =new GSON().fromJson(String , yourPOJO.class); // do this for all inputs
personList.add(p);

那么你需要使用

进行排序
Collections.sort(personList);

希望这有帮助!

祝你好运!

关于java - 根据多个值对 Json 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44363398/

相关文章:

java - 如何将包含 "include"部分的 Asciidoc 文档编译为单个 adoc 文件

mysql - Unicode解码错误: 'utf8' codec can't decode byte

c# - 无法获取 DataTable 进行排序

XML::复杂散列的简单输出元素顺序

java - 使用非总排序标准对 java 流进行排序。

java - 如何检测元素的变化

java - getStringArrayListExtra 给我一个空值,但我有值

java - 使用按钮切换 View 与 Android SDK

python - 我应该在 Python 中使用 JSON.dumpS 和 .write() 函数还是 json.dump()

java - 如何忽略 JSON 属性的底层结构并将其存储为字符串?