Package com.fasterxml.jackson.datatype.jsr310

# Class JavaTimeModule

java.lang.Object
com.fasterxml.jackson.databind.Module
com.fasterxml.jackson.databind.module.SimpleModule
com.fasterxml.jackson.datatype.jsr310.JavaTimeModule

All Implemented Interfaces:
  `com.fasterxml.jackson.core.Versioned`, `Serializable`

public final class JavaTimeModule extends com.fasterxml.jackson.databind.module.SimpleModule
Class that registers capability of serializing `java.time` objects with the Jackson core.

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

Note that as of 2.x, if auto-registering modules, this package will register legacy version, `JSR310Module`, and NOT this module. 3.x will change the default. Legacy version has the same functionality, but slightly different default configuration: see `JSR310Module` for details.

Most `java.time` types are serialized as numbers (integers or decimals as appropriate) if the `SerializationFeature.WRITE_DATES_AS_TIMESTAMPS` feature is enabled (or, for `Duration`, `SerializationFeature.WRITE_DURATIONS_AS_TIMESTAMPS`), and otherwise are serialized in standard ISO-8601 string representation. ISO-8601 specifies formats for representing offset dates and times, zoned dates and times, local dates and times, periods, durations, zones, and more. All `java.time` types have built-in translation to and from ISO-8601 formats.

Granularity of timestamps is controlled through the companion features `SerializationFeature.WRITE_DATE_TIMESTAMPS_AS_NANOSECONDS` and `DeserializationFeature.READ_DATE_TIMESTAMPS_AS_NANOSECONDS`. For serialization, timestamps are written as fractional numbers (decimals), where the number is seconds and the decimal is fractional seconds, if `WRITE_DATE_TIMESTAMPS_AS_NANOSECONDS` is enabled (it is by default), with resolution as fine as nanoseconds depending on the underlying JDK implementation. If `WRITE_DATE_TIMESTAMPS_AS_NANOSECONDS` is disabled, timestamps are written as a whole number of milliseconds. At deserialization time, decimal numbers are always read as fractional second timestamps with up-to-nanosecond resolution, since the meaning of the decimal is unambiguous. The more ambiguous integer types are read as fractional seconds without a decimal point if `READ_DATE_TIMESTAMPS_AS_NANOSECONDS` is enabled (it is by default), and otherwise they are read as milliseconds.

Some exceptions to this standard serialization/deserialization rule:

- `Period`, which always results in an ISO-8601 format because Periods must be represented in years, months, and/or days.
- `Year`, which only contains a year and cannot be represented with a timestamp.
- `YearMonth`, which only contains a year and a month and cannot be represented with a timestamp.
- `MonthDay`, which only contains a month and a day and cannot be represented with a timestamp.
- `ZoneId` and `ZoneOffset`, which do not actually store dates and times but are supported with this module nonetheless.
- `LocalDate`, `LocalTime`, `LocalDateTime`, and `OffsetTime`, which cannot portably be converted to timestamps and are instead represented as arrays when WRITE_DATES_AS_TIMESTAMPS is enabled.

Since:
  2.6
Author:
  Nick Williams, Zoltan Kiss
See Also:
  - `Jsr310NullKeySerializer`
  - Serialized Form

## Nested Class Summary

## Nested classes/interfaces inherited from class com.fasterxml.jackson.databind.Module

`com.fasterxml.jackson.databind.Module.SetupContext`

## Field Summary

### Fields inherited from class com.fasterxml.jackson.databind.module.SimpleModule

`_abstractTypes, _deserializerModifier, _deserializers, _hasExplicitName, _keyDeserializers, _keySerializers, _mixins, _name, _namingStrategy, _serializerModifier, _serializers, _subtypes, _valueInstantiators, _version`

## Constructor Summary

Constructors
Constructor
Description
`JavaTimeModule()`

## Method Summary

Modifier and Type
Method
Description
`protected com.fasterxml.jackson.databind.introspect.AnnotatedMethod`
`_findFactory(com.fasterxml.jackson.databind.introspect.AnnotatedClass cls, String name, Class<?>... argTypes)`
`void`
`setupModule(com.fasterxml.jackson.databind.Module.SetupContext context)`

### Methods inherited from class com.fasterxml.jackson.databind.module.SimpleModule

`_checkNotNull, addAbstractTypeMapping, addDeserializer, addKeyDeserializer, addKeySerializer, addSerializer, addSerializer, addValueInstantiator, getModuleName, getTypeId, registerSubtypes, registerSubtypes, registerSubtypes, setAbstractTypes, setDeserializerModifier, setDeserializers, setKeyDeserializers, setKeySerializers, setMixInAnnotation, setNamingStrategy, setSerializerModifier, setSerializers, setValueInstantiators, version`

### Methods inherited from class com.fasterxml.jackson.databind.Module

`getDependencies`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Constructor Details

### JavaTimeModule

public JavaTimeModule()

## Method Details

### setupModule

public void setupModule(com.fasterxml.jackson.databind.Module.SetupContext context)

Overrides:
  `setupModule` in class `com.fasterxml.jackson.databind.module.SimpleModule`

### _findFactory

protected com.fasterxml.jackson.databind.introspect.AnnotatedMethod _findFactory(com.fasterxml.jackson.databind.introspect.AnnotatedClass cls, String name, Class<?>... argTypes)