Jackson DateTime module for java.time.* package with proper Configuration.
Library try to fix poor standard Jackson JSR310 DateTime module, now you can change formatters for Date/Times and library is using ISO8601 with millis precision formatters by default.
Features:
- Default configuration with formatters ISO8601 with millis precision
- Module configuration with getter\setters (can easily be used in framework configurations)
Compatible with Java 8+.
Gradle
dependencies {
implementation "io.goodforgod:jackson-datetime-configuration:2.0.0"
}
Maven
<dependency>
<groupId>io.goodforgod</groupId>
<artifactId>jackson-datetime-configuration</artifactId>
<version>2.0.0</version>
</dependency>
JavaTimeModule library provides uses same Package.VERSION as Jackson Module, this is done on purpose cause modules are exclusive.
Example how to create JavaTimeModuleConfiguration with ISO8601 with millis precision formatters:
JavaTimeModuleConfiguration configuration = new JavaTimeModuleConfiguration();
Example of all available configurations for JavaTimeModuleConfiguration.
JavaTimeModuleConfiguration configuration = new JavaTimeModuleConfiguration()
.setInstantFormat("uuuu-MM-dd") // Set Instant formatter
.setOffsetTimeFormat("HH:mm:ss[.SSS]XXX") // Set OffsetTime formatter
.setOffsetDateTimeFormat("uuuu-MM-dd'T'HH:mm:ss[.SSS]XXX") // Set OffsetDateTime formatter
.setZonedDateTimeFormat("uuuu-MM-dd'T'HH:mm:ss[.SSS]XXX['['VV']']") // Set ZonedDateTime formatter
.setLocalDateTimeFormat("uuuu-MM-dd'T'HH:mm:ss[.SSS]") // Set LocalDateTime formatter
.setLocalDateFormat("uuuu-MM-dd") // Set LocalDate formatter
.setLocalTimeFormat("HH:mm:ss[.SSS]XXX") // Set LocalTime formatter
.setYearFormat("uuuu") // Set Year formatter
.setYearMonthFormat("uuuu-MM") // Set YearMonth formatter
.setMonthDayFormat("MM-dd") // Set MonthDay formatter
.setForceIsoChronology(true) // Forces IsoChronology for all formatters
.setForceResolverStrict(true); // Forces ResolverStyle#STRICT for all formatters
Example how to create configuration, module and register module for ObjectMapper.
JavaTimeModuleConfiguration configuration = new JavaTimeModuleConfiguration();
configuration.setLocalTimeFormat("HH-mm-ss");
JavaTimeModule module = configuration.getModule();
ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(module);
For proper Date & Times serialization, you probably don't want to adjust ZoneOffset when deserializing and serializing as longs, then configure ObjectMapper as follows:
ObjectMapper mapper = new ObjectMapper()
.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false) // Don't write dates as longs
.configure(DeserializationFeature.ADJUST_DATES_TO_CONTEXT_TIME_ZONE, false); // Don't change ZoneOffset to local
This project licensed under the Apache License 2.0 - see the LICENSE file for details.