gpt4 book ai didi

jackson - 相当于 Jackson 的 JsonAnySetter 的 moxy 是什么?

转载 作者:行者123 更新时间:2023-12-02 16:53:43 25 4
gpt4 key购买 nike

我正在尝试迁移到 Jersey 2.0。这让 Jackson 很痛苦,文档建议使用 Moxy。

我让 Moxy 负责 get 和 post 调用,一切都很好匹配,但我需要处理可能的未知元素。

// Handle unknown deserialization parameters
@JsonAnySetter
protected void handleUnknown(String key, Object value) {
if (unknownParameters == null) {
unknownParameters = new HashMap<>();
}
unknownParameters.put(key, value);
}

这在更改为 Jersey 2.0 之前效果很好,即使当我将其保留在其中时它不会引起任何问题,但它永远不会被调用。

如何在 Jersey 2.0 中实现此功能?我对莫克西或 jackson 都很好。

我的依赖项

'org.codehaus.jackson:jackson-mapper-asl:1.9.2',
'org.eclipse.persistence:org.eclipse.persistence.moxy:2.5.0',
'org.glassfish.jersey.media:jersey-media-moxy:2.0',

这对我的 web.xml 没有影响

<init-param>
<param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
<param-value>true</param-value>
</init-param>

最佳答案

您可以使用jersey-media-json-jackson模块而不是 MOXy 来利用注释(我不确定 MOXy 是否支持类似功能)。只是一些注意事项:

  • 删除 com.sun.jersey.api.json.POJOMappingFeature来自 web.xml 的 init 参数- Jersey 2.x 无法识别此属性(这是 Jersey 1.x 特有的)
  • 删除 org.glassfish.jersey.media:jersey-media-moxy:2.0依赖
  • 添加org.glassfish.jersey.media:jersey-media-json-jackson:2.0依赖和注册JacksonFeature在您的申请中(见下文)

完成这些步骤后,Jackson 应该处理对象<->JSON(un)编码,并且它应该识别 @JsonAnySetter .

注册JacksonFeature在您的应用程序中,请参阅用户指南中的专门部分 ( 8.1.4 Jackson ):

// Create JAX-RS application.
final Application application = new ResourceConfig()
.packages("org.glassfish.jersey.examples.jackson")
.register(MyObjectMapperProvider.class) // No need to register this provider if no special configuration is required.
.register(JacksonFeature.class);

关于jackson - 相当于 Jackson 的 JsonAnySetter 的 moxy 是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18068176/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com