gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 11:25:59 25 4
gpt4 key购买 nike

在 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com