CustomDateDeserializer.java 1.1 KB

123456789101112131415161718192021222324252627282930313233343536
  1. package com.gqy.common.config;
  2. import com.fasterxml.jackson.core.JsonParser;
  3. import com.fasterxml.jackson.databind.DeserializationContext;
  4. import com.fasterxml.jackson.databind.JsonDeserializer;
  5. import java.io.IOException;
  6. import java.text.ParseException;
  7. import java.text.SimpleDateFormat;
  8. import java.util.Date;
  9. public class CustomDateDeserializer extends JsonDeserializer<Date> {
  10. private static final String[] DATE_FORMATS = {
  11. "yyyy-MM-dd'T'HH:mm:ss.SSSXXX",
  12. "yyyy-MM-dd'T'HH:mm:ss.SSS+08:00",
  13. "yyyy-MM-dd HH:mm:ss"
  14. };
  15. public Date deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
  16. String dateStr = p.getText();
  17. for (String format : DATE_FORMATS) {
  18. try {
  19. SimpleDateFormat dateFormat = new SimpleDateFormat(format);
  20. return dateFormat.parse(dateStr);
  21. } catch (ParseException ignored) {
  22. ignored.printStackTrace();
  23. // Try next format
  24. }
  25. }
  26. throw new IOException("Unable to parse date '" + dateStr + "' with any of the supported formats");
  27. }
  28. }