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
,java.io.Serializable
public final class JavaTimeModule extends com.fasterxml.jackson.databind.module.SimpleModule
Class that registers capability of serializingjava.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: seeJSR310Module
for details.Most
java.time
types are serialized as numbers (integers or decimals as appropriate) if theSerializationFeature.WRITE_DATES_AS_TIMESTAMPS
feature is enabled (or, forDuration
,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. Alljava.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
andDeserializationFeature.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, ifWRITE_DATE_TIMESTAMPS_AS_NANOSECONDS
is enabled (it is by default), with resolution as fine as nanoseconds depending on the underlying JDK implementation. IfWRITE_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 ifREAD_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
andZoneOffset
, which do not actually store dates and times but are supported with this module nonetheless.LocalDate
,LocalTime
,LocalDateTime
, andOffsetTime
, which cannot portably be converted to timestamps and are instead represented as arrays when WRITE_DATES_AS_TIMESTAMPS is enabled.
- Since:
- 2.6
- See Also:
Jsr310NullKeySerializer
, Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description private com.fasterxml.jackson.core.util.JacksonFeatureSet<JavaTimeFeature>
_features
private static long
serialVersionUID
-
Constructor Summary
Constructors Constructor Description JavaTimeModule()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected com.fasterxml.jackson.databind.introspect.AnnotatedMethod
_findFactory(com.fasterxml.jackson.databind.introspect.AnnotatedClass cls, java.lang.String name, java.lang.Class<?>... argTypes)
JavaTimeModule
disable(JavaTimeFeature f)
JavaTimeModule
enable(JavaTimeFeature f)
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
-
-
-
-
Field Detail
-
serialVersionUID
private static final long serialVersionUID
- See Also:
- Constant Field Values
-
_features
private com.fasterxml.jackson.core.util.JacksonFeatureSet<JavaTimeFeature> _features
- Since:
- 2.16
-
-
Method Detail
-
enable
public JavaTimeModule enable(JavaTimeFeature f)
-
disable
public JavaTimeModule disable(JavaTimeFeature f)
-
setupModule
public void setupModule(com.fasterxml.jackson.databind.Module.SetupContext context)
- Overrides:
setupModule
in classcom.fasterxml.jackson.databind.module.SimpleModule
-
_findFactory
protected com.fasterxml.jackson.databind.introspect.AnnotatedMethod _findFactory(com.fasterxml.jackson.databind.introspect.AnnotatedClass cls, java.lang.String name, java.lang.Class<?>... argTypes)
-
-