@SuppressWarnings("unchecked") static SimpleModule register(SimpleModule module) { module.addKeyDeserializer(DateTime.class, new DateTimeKeyDeserializer()); module.addDeserializer(DateTime.class, new DateTimeDeserializer()); module.addSerializer(DateTime.class, ToStringSerializer.instance); module.addDeserializer(Interval.class, new JodaStuff.IntervalDeserializer()); module.addSerializer(Interval.class, ToStringSerializer.instance); JsonDeserializer<?> periodDeserializer = new PeriodDeserializer(); module.addDeserializer(Period.class, (JsonDeserializer<Period>) periodDeserializer); module.addSerializer(Period.class, ToStringSerializer.instance); module.addDeserializer(Duration.class, new DurationDeserializer()); module.addSerializer(Duration.class, ToStringSerializer.instance); return module; }
@Override public JodaDateDeserializerBase<?> withFormat(JacksonJodaDateFormat format) { return new LocalDateTimeDeserializer(format); }
@Override public JodaDateDeserializerBase<?> withFormat(JacksonJodaDateFormat format) { return new LocalTimeDeserializer(format); }
addDeserializer(DateTime.class, DateTimeDeserializer.forType(DateTime.class)); addDeserializer(DateTimeZone.class, new DateTimeZoneDeserializer()); addDeserializer(Duration.class, new DurationDeserializer()); addDeserializer(Instant.class, new InstantDeserializer()); addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer()); addDeserializer(LocalDate.class, new LocalDateDeserializer()); addDeserializer(LocalTime.class, new LocalTimeDeserializer()); JsonDeserializer<?> deser = new PeriodDeserializer(true); addDeserializer(Period.class, (JsonDeserializer<Period>) deser); addDeserializer(ReadablePeriod.class, new PeriodDeserializer(false)); addDeserializer(ReadableDateTime.class, DateTimeDeserializer.forType(ReadableDateTime.class)); addDeserializer(ReadableInstant.class, DateTimeDeserializer.forType(ReadableInstant.class)); addDeserializer(Interval.class, new IntervalDeserializer()); addDeserializer(MonthDay.class, new MonthDayDeserializer()); addDeserializer(YearMonth.class, new YearMonthDeserializer()); addKeyDeserializer(DateTime.class, new DateTimeKeyDeserializer()); addKeyDeserializer(LocalTime.class, new LocalTimeKeyDeserializer()); addKeyDeserializer(LocalDate.class, new LocalDateKeyDeserializer()); addKeyDeserializer(LocalDateTime.class, new LocalDateTimeKeyDeserializer()); addKeyDeserializer(Duration.class, new DurationKeyDeserializer()); addKeyDeserializer(Period.class, new PeriodKeyDeserializer()); addDeserializer(DateMidnight.class, new DateMidnightDeserializer()); addSerializer(DateMidnight.class, new DateMidnightSerializer());
@SuppressWarnings("unchecked") public static <T extends ReadableInstant> JsonDeserializer<T> forType(Class<T> cls) { return (JsonDeserializer<T>) new DateTimeDeserializer(cls, FormatConfig.DEFAULT_DATETIME_PARSER); }
BeanProperty prop) throws JsonMappingException JsonFormat.Value ann = findFormatOverrides(ctxt, prop, handledType()); if (ann != null) { JacksonJodaDateFormat format = _format; return withFormat(format);
@Override public JodaDateDeserializerBase<?> withFormat(JacksonJodaDateFormat format) { return new DateMidnightDeserializer(format); }
@Override public JodaDateDeserializerBase<?> withFormat(JacksonJodaDateFormat format) { return new LocalDateDeserializer(format); }
@Override public MonthDay deserialize(final JsonParser p, final DeserializationContext ctxt) throws IOException { JsonToken t = p.getCurrentToken(); if (t == JsonToken.VALUE_STRING) { String str = p.getText().trim(); if (str.isEmpty()) { return getNullValue(ctxt); } return MonthDay.parse(str, this._format.createParser(ctxt)); } return (MonthDay) ctxt.handleUnexpectedToken(handledType(), p.getCurrentToken(), p, "expected JSON String"); } }
@Override public JodaDateDeserializerBase<?> withFormat(JacksonJodaDateFormat format) { return new InstantDeserializer(format); }
@Override public JodaDateDeserializerBase<?> withFormat(JacksonJodaDateFormat format) { return new IntervalDeserializer(format); }
@Override public JodaDateDeserializerBase<?> withFormat(JacksonJodaDateFormat format) { return new YearMonthDeserializer(format); }
@Override public JodaDateDeserializerBase<?> withFormat(JacksonJodaDateFormat format) { return new MonthDayDeserializer(format); }
@SuppressWarnings("unchecked") public T _handleNotNumberOrString(JsonParser p, DeserializationContext ctxt) throws IOException { return (T) ctxt.handleUnexpectedToken(handledType(), p.getCurrentToken(), p, "expected JSON Number or String"); } }
@Override public DateTimeZone deserialize(JsonParser p, DeserializationContext ctxt) throws IOException { JsonToken t = p.getCurrentToken(); if (t == JsonToken.VALUE_NUMBER_INT) { // for fun let's allow use of offsets... return DateTimeZone.forOffsetHours(p.getIntValue()); } if (t == JsonToken.VALUE_STRING) { return DateTimeZone.forID(p.getText().trim()); } return _handleNotNumberOrString(p, ctxt); } }
@Override public YearMonth deserialize(final JsonParser p, final DeserializationContext ctxt) throws IOException { JsonToken t = p.getCurrentToken(); if (t == JsonToken.VALUE_STRING) { String str = p.getText().trim(); if (str.isEmpty()) { return null; } return YearMonth.parse(str, _format.createParser(ctxt)); } return (YearMonth) ctxt.handleUnexpectedToken(handledType(), p.getCurrentToken(), p, "expected JSON String"); } }
@Override public Instant deserialize(JsonParser p, DeserializationContext ctxt) throws IOException { JsonToken t = p.getCurrentToken(); if (t == JsonToken.VALUE_NUMBER_INT) { return new Instant(p.getLongValue()); } if (t == JsonToken.VALUE_STRING) { String str = p.getText().trim(); if (str.length() == 0) { return null; } // 11-Sep-2018, tatu: `DateTimeDeserializer` allows timezone inclusion in brackets; // should that be checked here too? return Instant.parse(str, _format.createParser(ctxt)); } return _handleNotNumberOrString(p, ctxt); } }
@Override public Duration deserialize(JsonParser p, DeserializationContext ctxt) throws IOException { switch (p.getCurrentTokenId()) { case JsonTokenId.ID_NUMBER_INT: // assume it's millisecond count return new Duration(p.getLongValue()); case JsonTokenId.ID_STRING: return _format.parsePeriod(ctxt, p.getText().trim()).toStandardDuration(); default: } return _handleNotNumberOrString(p, ctxt); }
@Override public JodaDateDeserializerBase<?> withFormat(JacksonJodaDateFormat format) { return new DateTimeDeserializer(_valueClass, format); }
public class DateTimeModule extends SimpleModule { public DateTimeModule() { super(); addSerializer(DateTime.class, new DateTimeSerializer()); addDeserializer(DateTime.class, new DateTimeDeserializer()); } }