Skip to content

⚙️ Micronaut configuration of Jackson DateTime module for java.time.*

License

Notifications You must be signed in to change notification settings

GoodforGod/micronaut-jackson-datetime

Repository files navigation

Micronaut Jackson Datetime

Minimum required Java version Maven Central Java CI Quality Gate Status Coverage Maintainability Rating

Library provides Micronaut Jackson Datetime module integration and configuration.

You can read more about module and its configuration here.

Dependency 🚀

Gradle

implementation "io.goodforgod:micronaut-jackson-datetime:3.0.0"

Maven

<dependency>
    <groupId>io.goodforgod</groupId>
    <artifactId>micronaut-jackson-datetime</artifactId>
    <version>3.0.0</version>
</dependency>

Configuration

You can read more about module configuration in details here, below is application.yaml configuration example:

jackson:
  datetime:
    enabled: true                                                       # Enable DateTime module registration (default true)
    module:
      offset-time-format: HH:mm:ss[.SSS]XXX                             # Set OffsetTime formatter (<- default value)
      offset-date-time-format: uuuu-MM-dd'T'HH:mm:ss[.SSS]XXX           # Set OffsetDateTime formatter (<- default value)
      zoned-date-time-format: uuuu-MM-dd'T'HH:mm:ss[.SSS]XXX['['VV']']  # Set ZonedDateTime formatter (<- default value)
      local-date-time-format: uuuu-MM-dd'T'HH:mm:ss[.SSS]               # Set LocalDateTime formatter (<- default value)
      local-date-format: uuuu-MM-dd                                     # Set LocalDate formatter (<- default value)
      local-time-format: HH:mm:ss[.SSS]XXX                              # Set LocalTime formatter (<- default value)
      year-format: uuuu                                                 # Set Year formatter (<- default value)
      year-month-format: uuuu-MM                                        # Set YearMonth formatter (<- default value)
      month-day-format: MM-dd                                           # Set MonthDay formatter (<- default value)
      force-resolver-strict: true                                       # Forces ResolverStyle#STRICT for all formatters (default - false)
      force-iso-chronology: true                                        # Forces IsoChronology for all formatters (default - false)

If you want know more about Java Date & Time you can read article here.

Hints

For proper Date & Times serialization, you probably don't want to adjust ZoneOffset when deserializing and serializing as longs, then configure as follows:

jackson:
  serialization:
    write-dates-as-timestamps: false            # Don't write dates as longs
  deserialization:
    adjust-dates-to-context-time-zone: false    # Don't change ZoneOffset to local

Recommended Configuration

Below is minimal recommended configuration that will be working for most cases.

jackson:
  serialization:
    write-dates-as-timestamps: false            # Don't write dates as longs
  deserialization:
    adjust-dates-to-context-time-zone: false    # Don't change ZoneOffset to local
  datetime:
    enabled: true                               # Enables date time module registration

Micronaut Compatability

Starting from version 3.0.0 library ships for Micronaut 4 & Java 17 is required.

Starting from version 2.0.0 library ships for Micronaut 3 & Java 1.8+ is required.

License

This project licensed under the Apache License 2.0 - see the LICENSE file for details.