Class DurationSerializer
- java.lang.Object
-
- com.fasterxml.jackson.databind.JsonSerializer<T>
-
- com.fasterxml.jackson.databind.ser.std.StdSerializer<T>
-
- com.fasterxml.jackson.datatype.jsr310.ser.JSR310SerializerBase<T>
-
- com.fasterxml.jackson.datatype.jsr310.ser.JSR310FormattedSerializerBase<java.time.Duration>
-
- com.fasterxml.jackson.datatype.jsr310.ser.DurationSerializer
-
- All Implemented Interfaces:
com.fasterxml.jackson.databind.jsonFormatVisitors.JsonFormatVisitable
,com.fasterxml.jackson.databind.jsonschema.SchemaAware
,com.fasterxml.jackson.databind.ser.ContextualSerializer
,java.io.Serializable
public class DurationSerializer extends JSR310FormattedSerializerBase<java.time.Duration>
Serializer for Java 8 temporalDuration
s.NOTE: since 2.10,
SerializationFeature.WRITE_DURATIONS_AS_TIMESTAMPS
determines global default used for determining if serialization should use numeric (timestamps) or textual representation. Before this,SerializationFeature.WRITE_DATES_AS_TIMESTAMPS
was used.- Since:
- 2.2
- See Also:
- Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description private DurationUnitConverter
_durationUnitConverter
When defined (notnull
) duration values will be converted into integers with the unit configured for the converter.static DurationSerializer
INSTANCE
private static long
serialVersionUID
-
Fields inherited from class com.fasterxml.jackson.datatype.jsr310.ser.JSR310FormattedSerializerBase
_formatter, _integerListType, _shape, _useNanoseconds, _useTimestamp
-
-
Constructor Summary
Constructors Modifier Constructor Description protected
DurationSerializer()
protected
DurationSerializer(DurationSerializer base, DurationUnitConverter converter)
protected
DurationSerializer(DurationSerializer base, java.lang.Boolean useTimestamp, java.lang.Boolean useNanoseconds, java.time.format.DateTimeFormatter dtf)
protected
DurationSerializer(DurationSerializer base, java.lang.Boolean useTimestamp, java.time.format.DateTimeFormatter dtf)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected void
_acceptTimestampVisitor(com.fasterxml.jackson.databind.jsonFormatVisitors.JsonFormatVisitorWrapper visitor, com.fasterxml.jackson.databind.JavaType typeHint)
private java.math.BigDecimal
_toNanos(java.time.Duration duration)
protected java.time.format.DateTimeFormatter
_useDateTimeFormatter(com.fasterxml.jackson.databind.SerializerProvider prov, com.fasterxml.jackson.annotation.JsonFormat.Value format)
com.fasterxml.jackson.databind.JsonSerializer<?>
createContextual(com.fasterxml.jackson.databind.SerializerProvider prov, com.fasterxml.jackson.databind.BeanProperty property)
protected com.fasterxml.jackson.databind.SerializationFeature
getTimestampsFeature()
Overridable method that determinesSerializationFeature
that is used as the global default in determining if date/time value serialized should use numeric format ("timestamp") or not.protected com.fasterxml.jackson.core.JsonToken
serializationShape(com.fasterxml.jackson.databind.SerializerProvider provider)
Overridable helper method used fromJSR310SerializerBase.serializeWithType(T, com.fasterxml.jackson.core.JsonGenerator, com.fasterxml.jackson.databind.SerializerProvider, com.fasterxml.jackson.databind.jsontype.TypeSerializer)
, to indicate shape of value during serialization; needed to know how type id is to be serialized.void
serialize(java.time.Duration duration, com.fasterxml.jackson.core.JsonGenerator generator, com.fasterxml.jackson.databind.SerializerProvider provider)
protected DurationSerializer
withConverter(DurationUnitConverter converter)
protected JSR310FormattedSerializerBase<?>
withFeatures(java.lang.Boolean writeZoneId, java.lang.Boolean writeNanoseconds)
protected DurationSerializer
withFormat(java.lang.Boolean useTimestamp, java.time.format.DateTimeFormatter dtf, com.fasterxml.jackson.annotation.JsonFormat.Shape shape)
-
Methods inherited from class com.fasterxml.jackson.datatype.jsr310.ser.JSR310FormattedSerializerBase
_integerListType, _useTimestampExplicitOnly, acceptJsonFormatVisitor, getSchema, useNanoseconds, useTimestamp, withFeatures
-
Methods inherited from class com.fasterxml.jackson.datatype.jsr310.ser.JSR310SerializerBase
serializeWithType
-
Methods inherited from class com.fasterxml.jackson.databind.ser.std.StdSerializer
_neitherNull, _nonEmpty, createSchemaNode, createSchemaNode, findAnnotatedContentSerializer, findContextualConvertingSerializer, findConvertingContentSerializer, findFormatFeature, findFormatOverrides, findIncludeOverrides, findPropertyFilter, getSchema, handledType, isDefaultSerializer, visitArrayFormat, visitArrayFormat, visitFloatFormat, visitIntFormat, visitIntFormat, visitStringFormat, visitStringFormat, wrapAndThrow, wrapAndThrow
-
-
-
-
Field Detail
-
serialVersionUID
private static final long serialVersionUID
- See Also:
- Constant Field Values
-
INSTANCE
public static final DurationSerializer INSTANCE
-
_durationUnitConverter
private DurationUnitConverter _durationUnitConverter
When defined (notnull
) duration values will be converted into integers with the unit configured for the converter. Only available whenSerializationFeature.WRITE_DURATIONS_AS_TIMESTAMPS
is enabled andSerializationFeature.WRITE_DATE_TIMESTAMPS_AS_NANOSECONDS
is not enabled since the duration converters do not support fractions- Since:
- 2.12
-
-
Constructor Detail
-
DurationSerializer
protected DurationSerializer()
-
DurationSerializer
protected DurationSerializer(DurationSerializer base, java.lang.Boolean useTimestamp, java.time.format.DateTimeFormatter dtf)
-
DurationSerializer
protected DurationSerializer(DurationSerializer base, java.lang.Boolean useTimestamp, java.lang.Boolean useNanoseconds, java.time.format.DateTimeFormatter dtf)
-
DurationSerializer
protected DurationSerializer(DurationSerializer base, DurationUnitConverter converter)
-
-
Method Detail
-
withFormat
protected DurationSerializer withFormat(java.lang.Boolean useTimestamp, java.time.format.DateTimeFormatter dtf, com.fasterxml.jackson.annotation.JsonFormat.Shape shape)
- Specified by:
withFormat
in classJSR310FormattedSerializerBase<java.time.Duration>
-
withConverter
protected DurationSerializer withConverter(DurationUnitConverter converter)
-
getTimestampsFeature
protected com.fasterxml.jackson.databind.SerializationFeature getTimestampsFeature()
Description copied from class:JSR310FormattedSerializerBase
Overridable method that determinesSerializationFeature
that is used as the global default in determining if date/time value serialized should use numeric format ("timestamp") or not.Note that this feature is just the baseline setting and may be overridden on per-type or per-property basis.
- Overrides:
getTimestampsFeature
in classJSR310FormattedSerializerBase<java.time.Duration>
-
createContextual
public com.fasterxml.jackson.databind.JsonSerializer<?> createContextual(com.fasterxml.jackson.databind.SerializerProvider prov, com.fasterxml.jackson.databind.BeanProperty property) throws com.fasterxml.jackson.databind.JsonMappingException
- Specified by:
createContextual
in interfacecom.fasterxml.jackson.databind.ser.ContextualSerializer
- Overrides:
createContextual
in classJSR310FormattedSerializerBase<java.time.Duration>
- Throws:
com.fasterxml.jackson.databind.JsonMappingException
-
serialize
public void serialize(java.time.Duration duration, com.fasterxml.jackson.core.JsonGenerator generator, com.fasterxml.jackson.databind.SerializerProvider provider) throws java.io.IOException
- Specified by:
serialize
in classcom.fasterxml.jackson.databind.ser.std.StdSerializer<java.time.Duration>
- Throws:
java.io.IOException
-
_toNanos
private java.math.BigDecimal _toNanos(java.time.Duration duration)
-
_acceptTimestampVisitor
protected void _acceptTimestampVisitor(com.fasterxml.jackson.databind.jsonFormatVisitors.JsonFormatVisitorWrapper visitor, com.fasterxml.jackson.databind.JavaType typeHint) throws com.fasterxml.jackson.databind.JsonMappingException
- Overrides:
_acceptTimestampVisitor
in classJSR310FormattedSerializerBase<java.time.Duration>
- Throws:
com.fasterxml.jackson.databind.JsonMappingException
-
serializationShape
protected com.fasterxml.jackson.core.JsonToken serializationShape(com.fasterxml.jackson.databind.SerializerProvider provider)
Description copied from class:JSR310SerializerBase
Overridable helper method used fromJSR310SerializerBase.serializeWithType(T, com.fasterxml.jackson.core.JsonGenerator, com.fasterxml.jackson.databind.SerializerProvider, com.fasterxml.jackson.databind.jsontype.TypeSerializer)
, to indicate shape of value during serialization; needed to know how type id is to be serialized.- Specified by:
serializationShape
in classJSR310SerializerBase<java.time.Duration>
-
withFeatures
protected JSR310FormattedSerializerBase<?> withFeatures(java.lang.Boolean writeZoneId, java.lang.Boolean writeNanoseconds)
- Overrides:
withFeatures
in classJSR310FormattedSerializerBase<java.time.Duration>
-
_useDateTimeFormatter
protected java.time.format.DateTimeFormatter _useDateTimeFormatter(com.fasterxml.jackson.databind.SerializerProvider prov, com.fasterxml.jackson.annotation.JsonFormat.Value format)
- Overrides:
_useDateTimeFormatter
in classJSR310FormattedSerializerBase<java.time.Duration>
-
-