Class 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 temporal Durations.

    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 Detail

      • _durationUnitConverter

        private DurationUnitConverter _durationUnitConverter
        When defined (not null) duration values will be converted into integers with the unit configured for the converter. Only available when SerializationFeature.WRITE_DURATIONS_AS_TIMESTAMPS is enabled and SerializationFeature.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)
    • Method Detail

      • getTimestampsFeature

        protected com.fasterxml.jackson.databind.SerializationFeature getTimestampsFeature()
        Description copied from class: JSR310FormattedSerializerBase
        Overridable method that determines SerializationFeature 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 class JSR310FormattedSerializerBase<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 interface com.fasterxml.jackson.databind.ser.ContextualSerializer
        Overrides:
        createContextual in class JSR310FormattedSerializerBase<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 class com.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 class JSR310FormattedSerializerBase<java.time.Duration>
        Throws:
        com.fasterxml.jackson.databind.JsonMappingException
      • _useDateTimeFormatter

        protected java.time.format.DateTimeFormatter _useDateTimeFormatter​(com.fasterxml.jackson.databind.SerializerProvider prov,
                                                                           com.fasterxml.jackson.annotation.JsonFormat.Value format)
        Overrides:
        _useDateTimeFormatter in class JSR310FormattedSerializerBase<java.time.Duration>