为什么编写媒体类型应用程序/ json失踪

基本上我有一个使用( application/json )并生成( application/json )的restful服务(post)。 此服务的单个参数是带注释的java对象。

我正在使用org.jboss.resteasy.client.ClientRequest将请求发送到服务。 但是,我在客户端和exception中得到此exception:

找不到内容类型application/json类型的writer。

这是否意味着我缺少一些图书馆jar子,或者我必须为application / json编写自己的编写器?

我正在使用resteasy 1.1

标记

拉曼是​​对的。 Jettison是一个有效的选择。 你也可以使用jackson。 如果您正在使用maven,那么就像在pom中包含以下依赖项一样简单:

   org.jboss.resteasy resteasy-jackson-provider 2.3.2.Final  

在这一点上,编写代码应该没有问题,例如:

  SomeBean query = new SomeBean("args") request.body("application/json", query); ClientResponse response = request.post(); 

实际上我遇到了同样的问题,我确实通过为application / json mime类型添加了jettison提供程序来解决它。 我不知道resteasy 1.1是否包含jettison提供者,但1.2版本确实如此。 此外,如果您使用的是jdk 1.6,则必须排除javax.xml.stream:stax-api jar文件,否则您将遇到问题。

这是一个例子:

 import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; @XmlRootElement(name="account") public class Account { private Long id; private String accountNo; public Account(){} public Account(String no) { accountNo=no; } @Id @XmlElement public Long getId() { return id; } public void setId(Long id) { this.id = id; } @XmlElement public String getAccountNo() { return accountNo; } public void setAccountNo(String a) { accountNo = a; } } 

和JAXB类:

 import java.util.ArrayList; import java.util.List; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.Produces; @Path("/account") public class AccountService { @GET @Path("/{accountNo}") @Produces("application/json") public Account getAccount(@PathParam("accountNo") String accountNo) { return new Account(accountNo); } } 

这就是全部,祝你有个美好的一天!

将下面添加到Resource类或导致exception的方法

 @Consumes(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON)