如何将JSON请求发布到Jersey REST服务?

Raj*_*ajV 5 jax-rs jersey eclipselink moxy

我可以成功地将XML数据发布到我的服务中,但是,尝试使用JSON执行相同操作失败了.POJO是:

@XmlRootElement
public class Address {
    String city;
    String zip;
    //Getters & setters...
}
Run Code Online (Sandbox Code Playgroud)

服务资源是:

@POST
@Produces("application/json")
public Address fix(Address a) {
    return a;
}
Run Code Online (Sandbox Code Playgroud)

我按照以下方式进行POST:

POST /AcmeWeb/svc/simple HTTP/1.1
Content-Length: 30
Content-Type: application/json; charset=UTF-8

{"city":"Miami","zip":"33130"}
Run Code Online (Sandbox Code Playgroud)

服务器正在响应400 Bad Request.我搜索了互联网,但没有找到发布JSON的好例子.任何帮助表示赞赏.谢谢.

Mar*_*ula 4

向您的方法添加@Consumes("application/json")注释fix()

更新:这对我有用:

资源方法:

@POST
@Produces("application/json")
@Consumes("application/json")
public Address post(Address addr) {
    return addr;
}
Run Code Online (Sandbox Code Playgroud)

地址类别:

@XmlRootElement
public class Address {
    public String city;
    public String zip;
}
Run Code Online (Sandbox Code Playgroud)

这是我发送的请求:

Accept  application/json
Content-Type    application/json; charset=UTF-8

{"city":"Miami","zip":"33130"}
Run Code Online (Sandbox Code Playgroud)

这是我得到的回应:

{"city":"Miami","zip":"33130"}
Run Code Online (Sandbox Code Playgroud)