jersey客户端可以使用JSON将JAXB对象发布到服务器吗?

我找到了很多关于如何设置jersey服务器以便它可以生成和使用JAXB绑定对象的示例,但是我很难找到如何让客户端发布相同的JAXB绑定对象的示例。 此示例显示如何使用XML执行此操作 。 我正在寻找一个展示如何使用JSON的方法。

我甚至不确定这是否可行。 post方法的javadoc是不明确的。

我的post看起来像这样:

Client client = Client.create(); WebResource resource = client.resource(uri); ClientResponse response = resource.type(MediaType.APPLICATION_JSON) .post(ClientResponse.class, instanceWithXmlRootElementAnnotation); 

当我尝试这个时,我的服务器获取请求,但@FormParam的字段总是作为空发送。 这是我的服务器端方法的签名:

 @POST @Path("apath") @Consumes(MediaType.APPLICATION_JSON) public String postAPath(@FormParam("InstanceWithXmlRootElementAnnotation") InstanceWithXmlRootElementAnnotation instanceWithXmlRootElementAnnotation) { //instanceWithXmlRootElementAnnotation is always null 

我想知道的是,我是否应该使用instanceWithXmlRootElementAnnotation 。 如果这是传统的Web服务,我将使用JAXB 生成一个对象供客户端使用并通过生成的类发送。 但是从我从我链接的示例中收集的内容来看,这个人正在发送源代码,而不是生成的类。

我自己想通了。 问题是服务器方面的问题。 一旦我删除了服务器上的@FormParam注释,一切都按预期工作。 结合的问题和答案将为其他人提供基本的教程。 我的服务器现在看起来像:

 @POST @Path("apath") @Consumes(MediaType.APPLICATION_JSON) public String postAPath(InstanceWithXmlRootElementAnnotation instanceWithXmlRootElementAnnotation) {