我正在尝试使用 Jersey 创建一个非常简单的 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 响应。因此,我将媒体类型更改为
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 日志中给了我以下错误:
SEVERE: MessageBodyWriter not found for media type=application/json, type=class java.util.ArrayList, genericType=java.util.List.
有人可以指导我如何获得 JSON 响应吗?
最佳答案
要使用 Jackson 2.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
子类。有关更多详细信息,请查看 Jersey documentation .
关于json - 使用 Jersey 在 REST Web 服务中返回 JSON 时,找不到媒体类型 = application/json 的 MessageBodyWriter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37250131/