我正在使用 Jersey JAX-RS 客户端(2.0 版)。我知道它使用 Jackson ObjectMapper 来生成和解析 JSON。我想使用相同的对象为某些 Java 类生成 JSON,以便我可以将它们写入日志。
我知道我可以创建一个 ObjectMapper 的新实例,但我更喜欢请求 Jersey Client 给我一个它正在使用的实例的引用。我该怎么做? Jersey 2.0 知道 Jackson,因为它首先包含一个用于配置 Jackson 功能的 JacksonFeature 类。
最佳答案
我通过添加以下静态成员解决了这个问题:
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_PROPERTIES
或 FAIL_ON_EMPTY_BEANS
;我用 object_mapper
出于其他一些原因。
关于json - 如何从 JAX-RS 客户端提取 ObjectMapper?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16380065/