My Android client get server JSON response as follows:
{"students":[{"id":1,"name":"John","age":12},
{"id":2,"name":"Thmas","age":13}
{"id":3,"name":"Merit","age":10}
...]}
My Android client code parses the JSON response to Java object by using gson.
My corresponding Java classes:
public class StudentList{
private List<Student> students;
public List<Student> getStudents(){
return students;
}
}
public class Student{
private long id;
private String name;
private int age;
public long getId() {
return id;
}
public String getName(){
return name;
}
public int getAge(){
return age;
}
}
Everything works fine for me at this point, I can successfully parse JSON data to my Java objects, like following:
//'jsonData' is the server responsed json data
StudentList students = gson.fromJson(jsonData, StudentList.class)
Then, I would like to modify a bit to get the students (from json data) in an alphabetic order, sorted by student's name. I tried the following way: (I changed the Student class to implement the Comparable<> interface):
public class Student implements Comparable<Student>{
private long id;
private String name;
private int age;
public long getId() {
return id;
}
public String getName(){
return name;
}
public int getAge(){
return age;
}
// Override compareTo(), sort by 'name'
@Override
public int compareTo(Student obj) {
return this.getName().compareToIgnoreCase(obj.Name());
}
}
With above modified Student class, I tried to parse the json data again :
//'jsonData' is the server responsed json data
StudentList students = gson.fromJson(jsonData, StudentList.class)
But the resulted students are still the same as before the sorting. My sorting solution does not work at all. Why?? Where am I wrong??
Simply implementing Comparable won't make your class be sorted; you've got to actually do something to sort it.
gson will not sort items in the list, it will still just add the items. You can sort the list after it's created using Collections.sort method:
java.util.Collections.sort(students);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With