我有Jersey Rest Webservice,服务器端代码为
@GET
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
public List<Employee> getEmployees()
{
return new EmployeeService().getEmployees();
}
Ť 我正在测试chrome rest客户端的服务。 这很好用 接受:application / xml **但是当我用代码请求时 接受: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.
这样做的正确方法是什么。
答案 0 :(得分:1)
您可以使用Jersey的内置Jackson JSON库从任何POJO类自动序列化JSON。您只需要将Jackson JSON库添加到您的pom.xml:
<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", ....]}
答案 1 :(得分:0)
您能否提供更多与球衣设置相关的详细信息(初学者的实体类注释)
您使用JAXB吗?哪个版本的泽西岛?
这是您的目标的良好起点:https://github.com/jasonray/jersey-starterkit/wiki/Serializing-a-POJO-to-xml-or-json-using-JAXB
答案 2 :(得分:0)
看看这里并试试这个例子。它几乎与您提到的用例完全相同。
答案 3 :(得分:0)
具有最新版本,例如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>
在行家中 它将起作用。
谢谢, Praveen R。