Jersey JSON API失败,带有@ attributes

时间:2016-05-17 19:12:42

标签: java json jaxb jersey jax-rs

所以我在使用Jersey / javax.ws.rs在Java中的Tomcat中使用REST Web API。

我想同时支持XML和JSON,因此使用JSON格式克隆了我的XML API服务器类,并使用APPLICATION_JSON查找/替换APPLICATION_XML。

它主要起作用,除了两者都使用映射的相同传输对象,

@XmlRootElement(name="chat")
@XmlAccessorType(XmlAccessType.FIELD)
public class ChatMessage extends Config {
    public String message;
    @XmlAttribute
    public String app;
}

调用Web API,然后返回JSON,

{"@app":"123", "message":"helloworld"}

但是使用相同的JSON在API上调用POST失败,"请求在语法上不正确",即不喜欢" @"出于某种原因。

如果我删除" @"它调用API,但不传递" id"。

javax.ws.rs代码是,

@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
@Path("/chat")
public ChatMessage chat(ChatMessage message, @Context HttpServletRequest requestContext) {
    ...
}

API的XML版本可以正常工作。

我目前针对此错误的解决方案是复制模型类,并从一个复制到另一个,但这种情况很糟糕。

使用Jersey 1.17,1.19中也有同样的错误

0 个答案:

没有答案