一尘不染

如何从JAX-RS Client提取ObjectMapper?

json

我正在使用Jersey JAX-
RS客户端(2.0版)。我知道它正在使用Jackson的ObjectMapper生成和解析JSON。我想使用同一对象为某些Java类生成JSON,以便可以将它们写入日志。

我知道我可以创建一个ObjectMapper的新实例,但是我希望请求Jersey
Client给我一个有关它正在使用的实例的引用。我怎样才能做到这一点?Jersey
2.0知道Jackson,因为它包含一个JacksonFeature类,该类首先用于配置Jackson功能。


阅读 266

收藏
2020-07-27

共1个答案

一尘不染

我通过添加以下静态成员来解决此问题:

private static JacksonJsonProvider jackson_json_provider = new JacksonJaxbJsonProvider()
      .configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false)
      .configure(SerializationConfig.Feature.FAIL_ON_EMPTY_BEANS, false);

private static ObjectMapper object_mapper = jackson_json_provider.locateMapper(
      Object.class, MediaType.APPLICATION_JSON_TYPE);

private static Client client = ClientBuilder.newClient().register(jackson_json_provider);

请注意,第二个声明并不需要仅用于配置FAIL_ON_UNKNOWN_PROPERTIESFAIL_ON_EMPTY_BEANS;
object_mapper出于其他一些原因使用。

2020-07-27