所以我在使用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中也有同样的错误