Package org.sdase.commons.server.jackson
Class Iso8601Serializer
- java.lang.Object
-
- com.fasterxml.jackson.databind.JsonSerializer<T>
-
- com.fasterxml.jackson.databind.ser.std.StdSerializer<java.time.ZonedDateTime>
-
- org.sdase.commons.server.jackson.Iso8601Serializer
-
- All Implemented Interfaces:
com.fasterxml.jackson.databind.jsonFormatVisitors.JsonFormatVisitable
,com.fasterxml.jackson.databind.jsonschema.SchemaAware
,java.io.Serializable
- Direct Known Subclasses:
Iso8601Serializer.WithMillis
public class Iso8601Serializer extends com.fasterxml.jackson.databind.ser.std.StdSerializer<java.time.ZonedDateTime>
A serializer used to writeZonedDateTime
in ISO 8601 datetime format contain date, hours, minutes, seconds and time zone.The serializer should be used instead of
JsonFormat.pattern()
because it does not affect the tolerant deserialization Jackson provides by default.Use the serializer at
ZonedDateTime
properties to activate it:class MyResource { @JsonSerialize(using = Iso8601Serializer.class) private ZonedDateTime createdAt; // writes json as {"createdAt": "2018-11-21T13:16:47Z"} for UTC // or {"createdAt": "2018-11-21T13:16:47+01:00"} for CET // ... } }
Note that there is a subclass to write including milli seconds:
Iso8601Serializer.WithMillis
- See Also:
- Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
Iso8601Serializer.WithMillis
A serializer used to writeZonedDateTime
in ISO 8601 datetime format contain date, hours, minutes, seconds, milli seconds and time zone.
-
Constructor Summary
Constructors Modifier Constructor Description Iso8601Serializer()
protected
Iso8601Serializer(java.lang.String pattern)
Constructor for subclasses that create a newIso8601Serializer
forZonedDateTime
using a custom pattern for formatting.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
acceptJsonFormatVisitor(com.fasterxml.jackson.databind.jsonFormatVisitors.JsonFormatVisitorWrapper visitor, com.fasterxml.jackson.databind.JavaType typeHint)
void
serialize(java.time.ZonedDateTime value, com.fasterxml.jackson.core.JsonGenerator gen, com.fasterxml.jackson.databind.SerializerProvider arg2)
-
Methods inherited from class com.fasterxml.jackson.databind.ser.std.StdSerializer
_neitherNull, _nonEmpty, createSchemaNode, createSchemaNode, findAnnotatedContentSerializer, findContextualConvertingSerializer, findConvertingContentSerializer, findFormatFeature, findFormatOverrides, findIncludeOverrides, findPropertyFilter, getSchema, getSchema, handledType, isDefaultSerializer, visitArrayFormat, visitArrayFormat, visitFloatFormat, visitIntFormat, visitIntFormat, visitStringFormat, visitStringFormat, wrapAndThrow, wrapAndThrow
-
-
-
-
Constructor Detail
-
Iso8601Serializer
public Iso8601Serializer()
-
Iso8601Serializer
protected Iso8601Serializer(java.lang.String pattern)
Constructor for subclasses that create a newIso8601Serializer
forZonedDateTime
using a custom pattern for formatting.- Parameters:
pattern
- the pattern used for formatting, seeDateTimeFormatter.ofPattern(String)
-
-
Method Detail
-
serialize
public void serialize(java.time.ZonedDateTime value, com.fasterxml.jackson.core.JsonGenerator gen, com.fasterxml.jackson.databind.SerializerProvider arg2) throws java.io.IOException
- Specified by:
serialize
in classcom.fasterxml.jackson.databind.ser.std.StdSerializer<java.time.ZonedDateTime>
- Throws:
java.io.IOException
-
acceptJsonFormatVisitor
public void acceptJsonFormatVisitor(com.fasterxml.jackson.databind.jsonFormatVisitors.JsonFormatVisitorWrapper visitor, com.fasterxml.jackson.databind.JavaType typeHint) throws com.fasterxml.jackson.databind.JsonMappingException
- Specified by:
acceptJsonFormatVisitor
in interfacecom.fasterxml.jackson.databind.jsonFormatVisitors.JsonFormatVisitable
- Overrides:
acceptJsonFormatVisitor
in classcom.fasterxml.jackson.databind.ser.std.StdSerializer<java.time.ZonedDateTime>
- Throws:
com.fasterxml.jackson.databind.JsonMappingException
-
-