【发布时间】:2017-11-03 14:23:25
【问题描述】:
我有class Admin extends User {}。 Admin 和 User 都扩展了 @XmlRootElement
@XmlRootElement
public class User {
....
}
@XmlRootElement
public class Admin extends User {
String statement;
}
我将此 Json 发送到正确的 JaxRS 服务:
{
"id": "84",
"content": "blablah",
"user": {
"id": 1,
"email": "nicolas@robusta.io",
"name": "Nicolas",
"male": true,
"admin": true,
"statement":"hello world"
}
}
这里是 Web 服务。评论应该有一个User,但我们这里有一个管理员,它有一个statement 不知道User 的字段。
@POST
@Path("{id}/comments")
public Response createComment(@PathParam("id") long topicId, Comment comment) { ... }
Comment 不被杰克逊接受为Comment,因为它的User 是Admin:
@XmlRootElement
public class Comment {
String id;
String content;
User user = null;
}
我应该如何告诉杰克逊接受任何类型的用户?如何做到与 Java EE 最兼容(即与具有另一个 Json 处理程序的服务器)?
【问题讨论】:
-
你在评论类中尝试过@XmlElement(name = "user", type = Admin.class)
-
它并不总是管理员。用户或管理员可以创建评论
标签: java jakarta-ee jackson jax-rs