我正在尝试使用泽西岛创建一个非常简单的REST服务。这是服务代码
@Path("/UserService")
public class UserService {
@GET
@Path("/users")
@Produces(MediaType.APPLICATION_XML)
public List<User> getUsers() {
User user = new User(1, "Thomas", "Greene");
List<User> userList = new ArrayList<User>();
userList.add(user);
return userList;
}
}
当我通过Postman运行它时,它会返回一个XML响应。
现在,我想要返回一个JSON响应。因此,我将mediatype更改为application/json
@Path("/UserService")
public class UserService {
@GET
@Path("/users")
@Produces(MediaType.APPLICATION_JSON)
public List<User> getUsers(){
User user = new User(1, "Thomas", "Greene");
List<User> userList = new ArrayList<User>();
userList.add(user);
return userList;
}
}
它给出了Tomcat日志中的以下错误:
严重:没有找到媒体类型为MessageBodyWriter =application/json、type=class java.util.ArrayList、genericType=java.util.List。
有人能指点我如何得到JSON响应吗?
发布于 2016-05-16 01:36:22
要使用Jackson2.x作为JSON提供程序,需要将jersey-media-json-jackson
模块添加到pom.xml
文件中:
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-json-jackson</artifactId>
<version>2.22.2</version>
</dependency>
然后将JacksonFeature
注册到您的Application
/ResourceConfig
子类中。
要了解更多细节,请看一下泽西文档。
发布于 2017-07-12 03:01:28
我现在也对JAXB绑定感到有些不安,因此让我在这里总结一下我的发现--如果我说了一些愚蠢的话,请纠正我:
我希望这对其他人有帮助。
发布于 2016-05-16 00:59:58
您需要在类路径上使用json序列化程序才能使其工作。
只要加上杰克逊,泽西就会在作者中使用这个词。如果您使用的是maven,请将其添加到pom.xml中
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.7.4</version>
</dependency>
https://stackoverflow.com/questions/37250131
复制相似问题