Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么缺少媒体类型应用程序/json的编写器_Java_Json_Resteasy - Fatal编程技术网

Java 为什么缺少媒体类型应用程序/json的编写器

Java 为什么缺少媒体类型应用程序/json的编写器,java,json,resteasy,Java,Json,Resteasy,基本上,我有一个restful服务(post),它使用(application/json)并生成(application/json)。此服务的单个参数是带注释的java对象 我正在使用org.jboss.resteasy.client.ClientRequest向服务发送请求。但是,我在客户端遇到此异常,并且异常: 找不到内容类型应用程序/json类型的编写器 这是否意味着我缺少一些库jar,或者我必须为application/json编写自己的编写器 我正在使用resteasy 1.1 Mar

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

我正在使用
org.jboss.resteasy.client.ClientRequest
向服务发送请求。但是,我在客户端遇到此异常,并且异常:

找不到内容类型
应用程序/json
类型的编写器

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

我正在使用resteasy 1.1


Mark

实际上我也遇到了同样的问题,我确实通过为application/json mime类型添加抛弃提供程序解决了这个问题。我不知道resteasy 1.1是否包含抛弃提供程序,但版本1.2包含。 另外,如果您使用的是JDK1.6,则必须排除javax.xml.stream:staxapijar文件,否则您将遇到问题

以下是一个例子:

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);
        }

    }

就这些,祝你今天愉快

拉曼是正确的。抛弃是一个有效的选择。你也可以使用Jackson。 如果您使用的是maven,只需在pom中包含以下依赖项即可:

    <dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>resteasy-jackson-provider</artifactId>
        <version>2.3.2.Final</version>
    </dependency>

将以下内容添加到资源类或导致异常的方法

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

[ClientRequest,如何将POJO序列化为json数据?找不到内容类型应用程序/json类型的编写器:[1][1]:
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)