Esiste un modulo dati di tipo jackson per JDK8 java.time?

Sto cercando un modulo per le nuove classi java.time JDK8 . Ho esaminato l’ elenco dei progetti GitHub di FasterXML e attualmente non ne ho trovati.

Come ho capito, Jackson è ancora in fase di compilazione rispetto a JDK6, quindi non è ansible utilizzare direttamente queste classi e questo deve essere creato come modulo separato, come richiesto da Joda.

Non mi dispiace di iniziare il progetto, anche se sto cercando di vedere se altri sforzi erano già in corso.

L’elenco più completo dei moduli di dati si trova nella pagina del “portale” di Jackson su Github:

https://github.com/FasterXML/jackson

che elenca “JSR-310: supporto per” Java 8 Date “. Il naming è bit opaco, ma si riferisce al processo di standardizzazione, tramite JSR che dovrebbe essere finalizzato per produrre la nuova API Java8 Date (se non è già definitiva; ha preso un po ‘di tempo).

Il collegamento diretto è: https://github.com/FasterXML/jackson-datatype-jsr310

Come già accennato, Jackson-Datatype-JSR310 fornisce supporto per Java 8 Time.

Dal momento che Jackson 2.6.0 il “vecchio” JSR310Module è deprecato. È sostituito da JavaTimeModule. La dipendenza da Maven è la stessa (puoi trovare la versione corrente in Maven Central ):

 com.fasterxml.jackson.datatype jackson-datatype-jsr310 2.6.0  

Devi registrare il modulo in questo modo:

 ObjectMapper mapper = new ObjectMapper(); mapper.registerModule(new JavaTimeModule()); 

Si noti che a partire da 2.6, questo modulo NON supporta la registrazione automatica, a causa dell’esistenza della versione legacy, JSR310Module. La versione legacy ha la stessa funzionalità, ma una configurazione predefinita leggermente diversa: vedere com.fasterxml.jackson.datatype.jsr310. JSR310Module per i dettagli.

JavaTimeModule Source su GitHub

Utilizzo di JavaTimeModule

Hai solo bisogno di importare il modulo jsr310 .

  com.fasterxml.jackson.datatype jackson-datatype-jsr310 2.5.0  

Se la scansione automatica del modulo non è abilitata nel tuo progetto, dovrai registrarla:

 ObjectMapper mapper = new ObjectMapper(); mapper.registerModule(new JSR310Module()); 

Il mio male, stavo cercando un jackson-datatype-jdk8 come era per jackson-datatype-jdk7 , tuttavia il progetto è stato effettivamente creato sotto il nome JSR jackson-datatype-jsr310 .

Se si utilizza Spring Boot 2 e dipende spring-boot-starter-web , si avranno come dipendenze sia: deprecato (jackson-datatype-jsr310) che effettivo (jackson-datatype-jdk8).

  [INFO] + - org.springframework.boot: spring-boot-starter-web: jar: 2.0.0.M3: compilazione
 [INFO] |  + - org.springframework.boot: spring-boot-starter-json: jar: 2.0.0.M3: compilazione
 [INFO] |  |  + - com.fasterxml.jackson.datatype: jackson-datatype-jdk8: jar: 2.9.0.pr4: compilazione
 [INFO] |  |  + - com.fasterxml.jackson.datatype: jackson-datatype-jsr310: jar: 2.9.0.pr4: compilazione