Mein Android-Client bekommt Server JSON-Antwort analysiert werden, wie folgt:Art meiner ojekte, die von JSON-Daten
{"students":[{"id":1,"name":"John","age":12},
{"id":2,"name":"Thmas","age":13}
{"id":3,"name":"Merit","age":10}
...]}
Mein Android-Client-Code die JSON Antwort auf Java-Objekt analysiert durch gson verwenden.
Meine entsprechenden Java-Klassen:
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;
}
}
Alles funktioniert in diesem Punkt für mich in Ordnung, kann ich erfolgreich JSON-Daten in meine Java-Objekte analysieren, wie folgt vor:
//'jsonData' is the server responsed json data
StudentList students = gson.fromJson(jsonData, StudentList.class)
Dann würde ich mag ein Bit ändern, um die students
(aus json
Daten) in einer alphabetischen Reihenfolge zu erhalten, sortiert nach Student name
. Ich habe folgende Art und Weise versucht: (ich die Student
Klasse geändert, um die Comparable<>
Schnittstelle zu implementieren):
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());
}
}
Mit Student
Klasse oben verändert, habe ich versucht, die JSON-Daten erneut zu analysieren:
//'jsonData' is the server responsed json data
StudentList students = gson.fromJson(jsonData, StudentList.class)
Aber die Ergebnis students
sind immer noch die gleichen wie vor dem Sortieren. Meine Sortierlösung funktioniert überhaupt nicht. Warum? Wo liege ich falsch ??
Gibt es einen Grund, nicht nur zu verwenden, [ 'Collections.sort()'] (http://docs.oracle.com/javase/6/ docs/api/java/util/Sammlungen.html # sort% 28java.util.List% 29)? – amit
Ich bin nicht vertraut mit Java. Aber ich glaube nicht, dass Sie die Liste sortiert haben. Versuchen Sie, die Collections.sort (Studenten) aufzurufen? – Evan
Sie müssen sie tatsächlich vergleichen ... – njzk2