RESTEasy找不到以下类型的响应对象的MessageBodyWriter: 媒体类型:application / json

问题描述 投票:0回答:1

我正在尝试使用rest easy来实现rest终结点。这是一个GET端点,

    @Controller
@Path("/api")
public class TestController {

    private static final Log LOG = LogFactory.getLog(TestController .class);


    @GET
    @Path("/test")
    @Produces(MediaType.APPLICATION_JSON)
    public Response getTest() {

        LOG.info(" inside test");

        Response r = null;
        try {

         Test test = new Test();
         test.setId(1L);
         test.setName("test");
         test.setAge("20");

         r = Response.ok(test).build();

        } catch (Exception e){
            LOG.error(e);
        }

        return r;
    }
}

下面是我要返回的实体类

@XmlRootElement
public class Test {

    @XmlElement(name = "id")
    private Long id;

    @XmlElement(name = "name")
    private String name;

    @XmlElement(name = "age")
    private String age;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAge() {
        return age;
    }

    public void setAge(String age) {
        this.age = age;
    }
}

从其他客户端调用端点时,出现以下错误。

Could not find MessageBodyWriter for response object of type: com.package.Test of media type: application/json

这些是我添加的一些依赖项,我认为这对您很有用。

httpclient-4.0.3.jar
httpcore-4.0.1.jar
jackson-core-asl-1.6.3.jar
jackson-jaxrs-1.9.13.jar
jackson-jaxrs-json-provider-2.2.1.jar
jackson-mapper-asl-1.6.3.jar
jackson-xc-1.6.3.jar
jaxrs-api-3.0.12.Final.jar
jboss-logging-3.3.1.Final.jar
jcip-annotations-1.0.jar
resteasy-jaxb-provider-3.1.0.Final.jar
resteasy-jettison-provider-2.3.1.GA.jar
resteasy-spring-2.2.1.GA.jar
scannotation-1.0.3.jar

没有人知道为什么会出现这种错误。端点能够返回纯字符串作为响应。

rest jaxb jax-rs resteasy spring-2.5
1个回答
0
投票

jackson-jaxrs-json-provider包含MessageBodyReader/Writer以处理JSON / POJO转换。但是您仍然需要在应用程序中注册其JacksonJaxbJsonProvider

[如果您正在使用RESTEasy,也可以只将resteasy-jackson-provider依赖项添加到您的项目中,它将自动注册JacksonJaxbJsonProvider,因此您无需显式执行此操作。该依赖项还添加了其他一些有用的项。因此,最好的选择就是添加依赖项。

© www.soinside.com 2019 - 2024. All rights reserved.