私の Android クライアントは、次のようにサーバーの JSON 応答を取得します。
{"students":[{"id":1,"name":"John","age":12},
{"id":2,"name":"Thmas","age":13}
{"id":3,"name":"Merit","age":10}
...]}
私の Android クライアント コードは、gsonを使用して Java オブジェクトへの JSON 応答を解析します。
私の対応するJavaクラス:
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;
}
}
この時点ですべてが正常に機能し、次のように JSON データを Java オブジェクトに正常に解析できます。
//'jsonData' is the server responsed json data
StudentList students = gson.fromJson(jsonData, StudentList.class)
次に、students(jsonデータから) をアルファベット順に取得し、生徒のname. 次の方法を試しました:(Studentクラスを変更してComparable<>インターフェイスを実装しました):
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());
}
}
上記の変更されたStudentクラスを使用して、json データを再度解析しようとしました。
//'jsonData' is the server responsed json data
StudentList students = gson.fromJson(jsonData, StudentList.class)
しかし、結果studentsはソート前と同じです。私の並べ替えソリューションはまったく機能しません。どうして??どこが間違っていますか??