Jersey 2.8 client is not ignoring unknown properties during deserialization
Try initializing the Jersey client with a JacksonJsonProvider
that's been configured appropriately:
final JacksonJsonProvider jacksonJsonProvider = new JacksonJaxbJsonProvider().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);final Client client = ClientBuilder.newClient(new ClientConfig(jacksonJsonProvider));
This was tested with Jackson 2.5.1 and Jersey 2.17
I had same issue and looking for a solution... find your proposition and it works for me :)
My test is very basic / see here below :
Client client = ClientBuilder.newClient() .register(JacksonFeature.class).register(JacksonConfigurator.class); WebTarget wt = client.target(REST_SERVICE_URL).path( "amount"); wt = wt.queryParam("from", "USD"); ConverterResponse cr=wt.request().get(ConverterResponse.class);
If I don't register your JacksonConfigurator, I get same exception as yours :
UnrecognizedPropertyException: Unrecognized field
Because converterResponse defines a subset of REST response object methods.
Thank you very much !
Jersey version 2.30:
Exception:Caused by: com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "failedLoginCount" at [Source: org.glassfish.jersey.message.internal.ReaderInterceptorExecutor$UnCloseableInputStream@77fbf8c9; line: 1, column: 100] (through reference chain: com.xx.XXX["failedLoginCount"]) at com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException.from(UnrecognizedPropertyException.java:62)
it works in below code:
<dependency> <groupId>org.glassfish.jersey.media</groupId> <artifactId>jersey-media-json-jackson</artifactId> <version>${jersey.version}</version></dependency>
import com.fasterxml.jackson.databind.DeserializationFeature;import org.glassfish.jersey.client.ClientConfig;import org.glassfish.jersey.jackson.internal.jackson.jaxrs.json.JacksonJaxbJsonProvider;import org.glassfish.jersey.jackson.internal.jackson.jaxrs.json.JacksonJsonProvider;public class ServiceClient { private Client client; public ServiceClient() { ClientConfig config = new ClientConfig(); JacksonJsonProvider jacksonJsonProvider = new JacksonJaxbJsonProvider().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); config.register(jacksonJsonProvider); client = ClientBuilder.newClient(config); }}