Ich benutze nur Jersey und nicht Jackson, um eine REST API zu erstellen. Ich habe zwei Modellobjekte,Benutzerdefinierte Objektanzeige in JSON
public class Course {
private int id;
private String name;
private Teacher teacher;
}
public class Teacher {
private int id;
private String givenName;
private String familyName;
}
ich einen Service und eine Liste der Kurs Objekte Rückkehr
public List<Course> getAll(){
return db.getCourseList();
}
Das Display wie erwartet,
[{"id":101,"name":"Introduction to Java","teacher":{"familyName":"Bar","givenName":"Foo","id":201}},{"id":102,"name":"Intermediate Java","teacher":{"familyName":"Prank","givenName":"Foo","id":202}}]
Now I möchte mein JSON-Objekt so anpassen, dass es im folgenden Format mit nur der Lehrer-ID angezeigt wird.
[{"id":"100","name":"Introduction to Java","teacherId":"201"},{"id":"101","name":"Intermediate Java","teacherId":"201"}
Das ist also die Ansicht Modell, das ich entworfen.
@XmlRootElement
public class CourseTeacherIdView {
private int id;
private String name;
private int teacherId;
CourseTeacherIdView(){
}
public CourseTeacherIdView(int id, String name, int teacherId){
this.id = id;
this.name = name;
this.teacherId = teacherId;
}
}
Und ich verwende diese Methode, um die Liste der Ansichtsobjekte zurückzugeben.
public List<CourseTeacherIdView> getAll(){
List<Course> list = db.getCourseList();
List<CourseTeacherIdView> viewList = new ArrayList<>();
for(Iterator<Course> itr = list.iterator(); itr.hasNext();){
Course c = (Course) itr.next();
viewList.add(new CourseTeacherIdView(c.getId(), c.getName(), c.getTeacher().getId()));
}
return viewList;
}
Das ist das Ergebnis, das ich bekomme.
[{},{},{}]
Was mache ich falsch.
es tatsächlich fixiert. Anscheinend, wenn die Klasse keine Getters und Setter hat, werden die Objekte so gedruckt. Ich habe die Getter und Setter hinzugefügt und es hat gut funktioniert. Vielen Dank. – Zeus