public final class JavaTimeModule extends SimpleModule
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.Jsr310NullKeySerializer
,
Serialized FormModule.SetupContext
_abstractTypes, _deserializerModifier, _deserializers, _keyDeserializers, _keySerializers, _mixins, _name, _namingStrategy, _serializerModifier, _serializers, _subtypes, _valueInstantiators, _version
Constructor and Description |
---|
JavaTimeModule() |
Modifier and Type | Method and Description |
---|---|
protected AnnotatedMethod |
_findFactory(AnnotatedClass cls,
String name,
Class<?>... argTypes) |
void |
setupModule(Module.SetupContext context)
Standard implementation handles registration of all configured
customizations: it is important that sub-classes call this
implementation (usually before additional custom logic)
if they choose to override it; otherwise customizations
will not be registered.
|
_checkNotNull, addAbstractTypeMapping, addDeserializer, addKeyDeserializer, addKeySerializer, addSerializer, addSerializer, addValueInstantiator, getModuleName, getTypeId, registerSubtypes, registerSubtypes, registerSubtypes, setAbstractTypes, setDeserializerModifier, setDeserializers, setKeyDeserializers, setKeySerializers, setMixInAnnotation, setNamingStrategy, setSerializerModifier, setSerializers, setValueInstantiators, version
getDependencies
public void setupModule(Module.SetupContext context)
SimpleModule
setupModule
in class SimpleModule
protected AnnotatedMethod _findFactory(AnnotatedClass cls, String name, Class<?>... argTypes)
Copyright © 2021 JBoss by Red Hat. All rights reserved.