Ich versuche Antwort auf Marschall so enthält ISO formatierte Datenstand:Registrieren JacksonJsonProvider mit ObjectMapper + JavaTimeModule nach Jersey 2 Kunden
{
...
"time" : "2014-07-02T04:00:00.000000Z"
...
}
in ZonedDateTime
Feld in Objekt meines Domain-Modells. Schließlich funktioniert es, wenn ich Lösung verwende, die in folgendem Schnipsel kommentiert wird. Es gibt viele ähnliche Fragen zu SO, aber ich möchte eine spezifische Antwort bekommen, was ist falsch mit einem anderen Ansatz, der JacksonJsonProvider
mit ObjectMapper + JavaTimeModule
verwendet?
ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(new JavaTimeModule());
JacksonJsonProvider provider = new JacksonJsonProvider(mapper);
Client client = ClientBuilder.newBuilder()
// .register(new ObjectMapperContextResolver(){
// @Override
// public ObjectMapper getContext(Class<?> type) {
// ObjectMapper mapper = new ObjectMapper();
// mapper.registerModule(new JavaTimeModule());
// return mapper;
// }
// })
.register(provider)
.register(JacksonFeature.class)
.build();
Fehler erhalte ich:
javax.ws.rs.client.ResponseProcessingException: com.fasterxml.jackson.databind.JsonMappingException: Can not construct instance of java.time.ZonedDateTime: no String-argument constructor/factory method to deserialize from String value ('2017-02-24T20:46:05.000000Z')
at [Source: org.glassfish.jersey.me[email protected]53941c2f
Projektabhängigkeiten sind:
compile 'com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.8.7'
compile 'com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.8.7'
compile 'com.fasterxml.jackson.core:jackson-core:2.8.7'
compile 'com.fasterxml.jackson.core:jackson-databind:2.8.7'
compile 'com.fasterxml.jackson.core:jackson-annotations:2.8.7'
compile 'org.glassfish.jersey.core:jersey-client:2.25.1'
bearbeiten
Deserialisierung hier geschieht:
CandlesResponse<BidAskCandle> candlesResponse = webTarget.request()
.header(HttpHeaders.AUTHORIZATION,"Bearer "+token)
.accept(MediaType.APPLICATION_JSON)
.get(new GenericType<CandlesResponse<BidAskCandle>>(){});
Ich wählte Option mit 'JacksonJaxbJsonProvider', wie es einfacher aussieht und keine zusätzlichen Abhängigkeiten beinhaltet. Es funktioniert. –