Skip to content

Instantly share code, notes, and snippets.

@CharlesLuxinger
Created April 1, 2021 14:43
Show Gist options
  • Save CharlesLuxinger/a024608d0ce85a323f4c11723edd9957 to your computer and use it in GitHub Desktop.
Save CharlesLuxinger/a024608d0ce85a323f4c11723edd9957 to your computer and use it in GitHub Desktop.
OffsetDateTimeDeserialize
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.deser.std.StdDeserializer;
import java.io.IOException;
import java.time.OffsetDateTime;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeFormatterBuilder;
public class OffsetDateTimeDeserialize extends StdDeserializer<OffsetDateTime> {
protected OffsetDateTimeDeserialize() {
super(OffsetDateTime.class);
}
@Override
public OffsetDateTime deserialize(
final JsonParser jsonParser,
final DeserializationContext ctxt) throws IOException {
if (jsonParser != null) {
String value = jsonParser.readValueAs(String.class);
DateTimeFormatter formatter = new DateTimeFormatterBuilder()
.append(DateTimeFormatter.ISO_LOCAL_DATE_TIME)
.optionalStart().appendOffset("+HH:MM", "+00:00").optionalEnd()
.optionalStart().appendOffset("+HHMM", "+0000").optionalEnd()
.optionalStart().appendOffset("+HH", "Z").optionalEnd()
.toFormatter();
if (value != null) {
return OffsetDateTime.parse(value, formatter);
}
}
return null;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment