基于多个值对Json进行排序

时间:2017-06-05 07:01:52

标签: 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或其他任何内容。

1 个答案:

答案 0 :(得分:0)

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

希望这有帮助!

祝你好运!