How do I enable automatic JSON marshalling in Jersey using autodiscovery?
我正在尝试创建一个生成 JSON 的非常简单的示例rest服务。我的理解是 Jersey 应该自动发现 Jackson 库(如果它们在类路径上)并且 JSON 编组应该自动发生。
调用GET时报如下错误。我是在使用适当的依赖项来使它工作还是我错过了一些更基本的东西?
1
|
SEVERE: MessageBodyWriter not found for media type=application/json, type=class jsonex.Person, genericType=class jsonex.Person.
|
依赖
我正在使用 Gradle 并应用了 gretty 插件和这些依赖项:
1
2 3 4 5 |
dependencies {
compile group: ‘javax.ws.rs’, name: ‘javax.ws.rs-api’, version: ‘2+’ runtime group: ‘org.glassfish.jersey.containers’, name: ‘jersey-container-servlet’, version: ‘2.23’ runtime group: ‘org.glassfish.jersey.media’, name: ‘jersey-media-json-jackson’, version: ‘2.7’ } |
应用类
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
package jsonex;
import javax.ws.rs.ApplicationPath; @ApplicationPath ("services") @Override |
服务类
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
package jsonex;
import javax.ws.rs.GET; @Path("people") @GET |
POJO
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
package jsonex;
public class Person { public String getFirstName() { public void setFirstName(String firstName) { public String getLastName() { public void setLastName(String lastName) { |
谢谢!
为了在 Jersey 中使用 Jackson 使用/生成 JSON,您必须在您的应用程序中注册 Jackson 功能 (它不像其他泽西岛的一些功能那样自动被发现。
将
1
2 3 4 5 6 7 8 9 10 |
@ApplicationPath("/api") public class MyApplication extends Application { @Override |
1 2 3 4 5 6 7 | @ApplicationPath("/api") public class MyApplication extends ResourceConfig { public MyApplication() { |
此答案中完整描述了使用 Jackson 作为 Jersey 的 JSON 提供程序的步骤。有关更多详细信息,请查看泽西文档。
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/267529.html