私の 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
はソート前と同じです。私の並べ替えソリューションはまったく機能しません。どうして??どこが間違っていますか??