我似乎无法将 JSON 发布到我的网络服务,但 XML 工作正常:
@POST
@Consumes({"application/xml","application/json"})
public void addOrder(JAXBElement<OrderBean> order) {
System.out.println("COOL");
}
curl -v -X POST --data-binary "<orderBean><customer>test</customer></orderBean>" -H"Content-Type: application/xml" http://localhost:8080/webapp/rest/order
curl -v -X POST --data-binary "{"orderBean":{"customer":"test"}}" -H"Content-Type: application/json" http://localhost:8080/webapp/rest/order
我收到以下 JSON 错误:
java.lang.Error: Error: could not match input
at com.sun.jersey.json.impl.reader.JsonLexer.zzScanError(JsonLexer.java:491)
任何帮助将不胜感激。
最佳答案
当您的 OrderBean
已正确注释为任何 @XmlXXX
,你不必用 JAXBElement<>
包裹它
@POST
@Consumes(...)
public void addOrder(final OrderBean order) {
}
并且您应该发送与 Jersey 可以解析的完全相同的 JSON 字符串。
这意味着您应该发送与 Jersey 打印的 JSON 字符串结构完全相同的
请参阅
http://jersey.java.net/nonav/documentation/latest/json.html#d4e949
和
关于java - JSON Jersey JAXB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5890099/