当前位置: 首页 > 知识库问答 >
问题:

泽西2.17项目还需要杰克逊eature.class吗?

华景焕
2023-03-14

我一直想知道JacksonFeature。泽西2.17仍然需要上课。我看不出JacksonFeature代码之间的输出有任何区别。类是否已注册。

然后,我从codingpedia中分叉了一个代码,删除了JacksonFeature.class,升级到Spring 4.1.2和jersey 2.17,更新了代码,测试仍然通过。

因此,我创建了一个非常简单的web服务来再次测试这个github链接,考虑到要删除所有移动部分,并且仍然有效。那么我们还需要注册JacksonFeature吗?

共有1个答案

姬存
2023-03-14

是的,我不知道为什么那个教程他们使用泽西2.9,但是对于jersey-media-json-jackson工件,他们使用的是2.4.1。通常您应该保持泽西(相关工件)版本相同。在实际的Github项目中,作者将其更改为使用项目的${jersey.version}(即2.14),这更有意义。

但为了回答您的主要担忧,从版本2.9开始,jersey media json jackson模块参与自动发现类路径扫描,这涉及Java的服务提供者机制。通过来回切换到此模块的2.8版本和2.9(向上)版本,可以看到此更改。您将在META-INF/services中看到文件org。玻璃鱼。运动衫内部的spi。Autodiscoverable(自动发现)(其中列出了JacksonAutoDiscoverable的实现),版本为2.9(及更高版本)。这样,不需要显式配置该功能,除非禁用了自动发现功能(可以显式配置)。

为了完整起见,当类路径上有MOXy并且您没有显式注册Jackson功能时,将使用MOXy,因为MOXy是默认提供程序。即使您可能没有对MOXy的显式依赖,在使用Glassfish服务器的情况下,它也有MOXy工件,在这种情况下,我们可以显式注册Jackson Feature,它会自动禁用MOXy,或者我们可以使用属性ServerProperties显式禁用MOXy。MOXY_JSON_FEATURE_DISABLE设置为true

 类似资料:
  • 我有一个带有以下注释的类: 我尝试的是忽略反序列化的json。但它不起作用。始终在 JSON 字符串到达时,Jackson lib 将填充 references 属性。如果我只使用@JsonIgnore注释,则 getter 不起作用。这个问题有什么解决方案吗? 谢啦

  • 我试图能够定义以下代码: 我知道我需要使用: 要正确设置对象映射器,以便能够在rest资源上接受单个值作为数组。我成功地安装了那个部件。 我对这种方法的问题是,以下内容是不可区分的: 和 将产生一个大小为1的列表。然后,在方法create(List myObjects)中,我将无法区分List和发送到Rest资源的单个对象。 那么,我的问题是如何做到这一点。我们的想法是只有一个@POST同时接受数

  • 开发JAX-RS应用程序并解决问题。需要从我的资源中自定义json输出以使用Jackson(2.22.2)解析器而不是默认Moxy(根据此答案)。 这是pom。xml片段 我还配置web.xml文件默认使用Jackson 但是资源输出与我使用注释和序列化器配置的有所不同。这是表示为json的模型 和序列化程序 } 这是资源片段 响应json根本不是定制的。 期望的输出是 谢谢。

  • 我想使用Spring的RestTemplate plus Jackson来使用Web服务。我已经学习了几本教程,并且已经达到了创建DAO的目的。这是我获取所有域对象的方法: 但我的Web服务不会立即返回Station对象数组,而是以这种方式返回一个更具语义的表达式: 所以我的问题是,我不知道如何“告诉”RestTemplate在“stations”指示符之后立即解析对象列表,而不创建临时对象,这似

  • 问题内容: 我在对象映射器上使用Jackson的readValue()方法从JSON文件读取并将其转换为我的Java对象。 例如。 我可以在MyTargetClass上设置任何注释以强制执行必需的属性吗?例如,如果我有一个具有ABC,DEF和GHI属性的JSON对象,而我的Json是以下内容 我希望它以某种方式失败,并且仅在readValue包含ABC,DEF和GHI时才能成功。 问题答案: Ja

  • 我正在使用泽西(2.23.1)和。但这与Jackson 2.5.4相关联。但我需要使用Jackson 2.6.0(或更新版本)。 我怎么能这么做? 我试着把它放在我的pom里。xml: 然后使用jackson 2.6.0。(我也尝试过更新的版本。) 但是我的rest应用程序抛出了各种各样的方法错误,比如: 有没有办法在Jackson 2.6.0或更新版本中使用Jersey 2.23.1?TIA!