How to set a custom Jackson ObjectMapper for Jersey 1.0 client
我使用Jersey 1.0 http-client来调用资源并反序列化响应JSON,如下所示:
1 2 3 | Client client = Client.create(new DefaultClientConfig()) ClientResponse clientResponse = client.resource("http://some-uri").get(ClientResponse.class) MyJsonRepresentingPOJO pojo = clientResponse.getEntity(MyJsonRepresentingPOJO.class) |
现在响应JSON有一些新字段,我得到以下异常:
1 | com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field"xyz" |
如何将jackson的反序列化模式更改为NON-STRICT,以便忽略新字段?
要配置
创建一个
1 2 3 | ClientConfig config = new DefaultClientConfig(); config.register(new ObjectMapperContextResolver()); Client client = Client.create(config); |
或实例化
1 2 3 | ClientConfig config = new DefaultClientConfig(); config.register(new JacksonJsonProvider(mapper)); Client client = Client.create(config); |
请注意,如果您使用的是JAXB注释,则需要使用
要忽略未知属性,可以在
1 | mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); |
编辑
我在上面的例子中犯了一个错误。 Jersey 1.x中的