在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或其他任何内容。
答案 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);
希望这有帮助!
祝你好运!