如何找到球衣使用的反序列化器

How to find the deserializer used by jersey

在我们的球衣项目中,我们使用了 2 个 json 提供商,Moxy 和 Jackson。我想知道哪个提供商被用来反序列化我的有效负载,无论是 Moxy 还是 Jackosn。有什么办法可以找到吗?

种方法可以找到它,但没有必要,因为通常会使用相同的方法。 Jersey (2.x) 的设置方式是,MOXy (jersey-media-moxy) 是默认提供程序。如果你在类路径上都有,没有任何进一步的配置,将使用 MOXy。

有几种方法可以禁用 MOXy。显式注册 JacksonFeaturejersey-media-json-jackson 附带),或将 属性 ServerProperties.MOXY_JSON_FEATURE_DISABLE 设置为 true

但为了完整起见,我可以想到几种方法来确定正在使用的方法

  • 触发异常并在映射器中处理。检查堆栈跟踪。 (我知道不是很优雅)
  • ObjectMapper写一个ContextResolver。如果使用 Jackson,将调用 getContext 方法(只需添加一个 s.o.p)。
  • 您可以通过可注入的 Providers 接口检索提供程序。

可能还有其他方法,但就像我说的那样,似乎没有必要。你应该已经知道了。