package com.storakle.shopify.jackson; import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.databind.DeserializationContext; import com.fasterxml.jackson.databind.JsonDeserializer; import com.fasterxml.jackson.databind.deser.std.DateDeserializers.DateDeserializer; import java.io.IOException; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; /** * @see <a href="http://www.baeldung.com/jackson-serialize-dates">Jackon Custom date serialization</a> * @see <a href="http://www.leveluplunch.com/java/tutorials/033-custom-jackson-date-deserializer/">Jackon Custom date serialization</a> */ public final class FlexDateDeserializer extends JsonDeserializer<Date> { @Override public Date deserialize(final JsonParser parser, final DeserializationContext context) throws IOException { SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssX"); final String date = parser.getText(); try { return formatter.parse(date); } catch (final ParseException ex) { // Not worked, so let the default date serializer give it a try. return DateDeserializer.instance.deserialize(parser, context); } } }