繁体   English   中英

如何在 Jersey Rest 中将响应作为 JSON 发送

[英]How to send response as JSON in Jersey Rest

我有 Jersey Rest Webservice 和服务器端代码

    @GET
    @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
    public List<Employee> getEmployees()
    {
        return new EmployeeService().getEmployees();
    }

TI 正在测试来自 chrome rest 客户端的服务。 这适用于 Accept: application/xml ** 但是当我使用代码 Accept: application/json 请求时

我收到以下异常:-

javax.servlet.ServletException:

org.glassfish.jersey.message.internal.MessageBodyProviderNotFoundException: MessageBodyWriter not found for media type=application/json, type=class com.rshekhar.domain.Employee, genericType=class com.rshekhar.domain.Employee.

这样做的正确方法是什么。

您可以使用 Jersey 的内置 Jackson JSON 库从任何 POJO 类自动序列化 JSON。 你只需要在你的 pom.xml 中添加 Jackson JSON 库:

    <dependency>
        <groupId>com.sun.jersey</groupId>
        <artifactId>jersey-json</artifactId>
        <version>${jersey.version}</version>
    </dependency>

同样为了激活 Jersey 的 POJO 映射,您需要在 web.xml 中添加以下几行:

    <init-param>
        <param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
        <param-value>true</param-value>
    </init-param>

然后,如果您的类方法EmployeeService().getEmployees()返回员工列表,Jersey 会将其序列化为(JSON 数组)之类的内容

{"employees": ["name":"Adam", "name":"Robert", ....]} 

您能否提供与球衣设置相关的更多详细信息(初学者的实体类注释)

你使用 JAXB 吗? 哪个版本的泽西?

这是您目标的不错起点: https : //github.com/jasonray/jersey-starterkit/wiki/Serializing-a-POJO-to-xml-or-json-using-JAXB

看看这里并尝试这个例子。 它几乎与您提到的用例完全相同。

jax-rs 中的多种内容类型

使用最新版本,如 1.19.1 球衣。

添加以下依赖

compile group: 'com.fasterxml.jackson.jaxrs', name: 'jackson-jaxrs-json-provider', version: '2.10.0.pr1'

在 gradle

或者如果您使用的是 maven。

<dependency>
   <groupId>com.fasterxml.jackson.jaxrs</groupId>
   <artifactId>jackson-jaxrs-json-provider</artifactId>
   <version>2.10.0.pr1</version>
</dependency>

在 maven 中它会起作用。

谢谢,普拉文 R。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM