[英]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
看看这里并尝试这个例子。 它几乎与您提到的用例完全相同。
使用最新版本,如 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.