java - 无法在 Jersey 2.0 中为 Jackson 启用基于 POJO 的 JSON 绑定(bind)支持

标签 java jersey jackson

我正在使用 Jersey 生成 JSON(通过 Jackson 进行 POJO 映射)和 Jetty(从 main 方法开始)。
它非常适合 Jersey 1.x.:

ServletHolder sh = new ServletHolder(ServletContainer.class);
sh.setInitParameter("com.sun.jersey.config.property.resourceConfigClass",
                        "com.sun.jersey.api.core.PackagesResourceConfig");
sh.setInitParameter("com.sun.jersey.config.property.packages", "service");
sh.setInitParameter("com.sun.jersey.api.json.POJOMappingFeature", "true");
...
context.addServlet(sh, "/rest/*");
Server server = new Server(8080);
server.setHandler(context);
server.start();

现在我将我的项目迁移到 Jersey 2.0,但无法在其中启用基于 POJO 的 JSON 绑定(bind),我得到以下信息: org.glassfish.jersey.message.internal.MessageBodyProviderNotFoundException: MessageBodyWriter not found for media type=application/json, type=class business.entity.ExampleEntity, genericType=class business.entity.ExampleEntity.

显然,com.sun.jersey.api.json.POJOMappingFeature不再有效,因为 Jersey 转到 org.glassfish

documentation说以下内容:

In order to use Jackson as your JSON (JAXB/POJO) provider you need to register JacksonFeature and a ContextResolver for ObjectMapper (if needed) in your Configurable (client/server).

但我不知道如何在我的情况下正确地做到这一点。

我创造了一点 project对于这个问题:

分支机构 master - Jersey 1.17.1 的工作示例;

分支机构 jersey-2.0-migration - 无法尝试迁移到 Jersey 2.0 - 测试失败

分支机构 jersey-2.0-migrate-client-only - 无法尝试将 Jersey 客户端 2.0 与工作中的 Jersey 服务器 1.17.1 一起使用 - 测试失败

问题是:如何在 Jersey 2.0 中启用基于 POJO 的 JSON 绑定(bind)

最佳答案

文档有点过时了。最新的 Jackson 构建提供了一个自动发现的提供程序。将以下 jar 添加到类路径:

1) jackson-annotations-2.2.2.jar

2) jackson-core-2.2.2.jar

3) jackson-databind-2.2.2.jar

4) jackson-jaxrs-base-2.2.1.jar

5) jackson-jaxrs-json-provider-2.2.1.jar

6) jackson-module-jaxb-annotations-2.2.2.jar

确保将“com.fasterxml.jackson.jaxrs.json”添加到“jersey.config.server.provider.packages”servlet 配置属性,以便自动发现 Jackson json 提供程序。

关于java - 无法在 Jersey 2.0 中为 Jackson 启用基于 POJO 的 JSON 绑定(bind)支持,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17511268/

相关文章:

java - 如何使用泛型参数将泛型类型转换为泛型类型?

java - ORA-00979 : not a GROUP BY expression

java - .hasNext() 不会变成 false

java - com.sun.jersey.api.view.Viewable无法解析,它是从required.class间接引用的

java - 如何在 RESTful POST 方法中访问参数

java - 使用jackson-mapper解析json文件错误

java - Jackson - 循环依赖导致反序列化失败

java - 井字棋板二维阵列

java - 使用 Fetch API 通过 React 应用程序调用 servlet - 出现“无法加载资源”错误(406 - Not Acceptable )

postgresql - 重启 Spring Boot 应用程序后首次调用速度慢