Ich habe class Admin extends User {}
. Admin
und User
beide erstreckt @XmlRootElement
Polymorphismus mit JaxRS und Jackson
@XmlRootElement
public class User {
....
}
@XmlRootElement
public class Admin extends User {
String statement;
}
ich diesen Json Dienst nach rechts JaxRS schicke:
{
"id": "84",
"content": "blablah",
"user": {
"id": 1,
"email": "[email protected]",
"name": "Nicolas",
"male": true,
"admin": true,
"statement":"hello world"
}
}
Hier ist der Web-Service. Der Kommentar soll eine User
haben, aber wir haben hier einen Admin, der ein statement
unbekanntes Feld User
hat.
@POST
@Path("{id}/comments")
public Response createComment(@PathParam("id") long topicId, Comment comment) { ... }
Comment
nicht als Comment
von Jackson akzeptiert, weil seine User
ein Admin
ist:
@XmlRootElement
public class Comment {
String id;
String content;
User user = null;
}
Wie soll ich Jackson sagen, jede Art von Benutzer zu akzeptieren? Wie funktioniert das am besten mit Java EE kompatibel (dh mit Servern, die einen anderen Json-Handler haben)?
Versuchten Sie @XmlElement (name = „user ", type = Admin.class) in der Kommentarklasse –
Es ist nicht immer ein Admin. Ein Benutzer oder Administrator kann einen Kommentar erstellen –