Jackson 2.3.2: Issue with deserializing a Date despite of setting the date format to ObjectMapper

僤鯓⒐⒋嵵緔 提交于 2019-12-23 08:07:57

问题


I am using rest easy and want to serialize and deserialize dates.

After creating my json provider, Serializing is working fine but deserializing is still not working.

My JsonProvider class:

@Provider
@Produces(MediaType.APPLICATION_JSON)
public class JsonProvider extends JacksonJaxbJsonProvider {

   public JsonProvider() {

      ObjectMapper mapper = new ObjectMapper();
      mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
      mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
      mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
      mapper.setDateFormat("dd MMM, yyyy hh:mm:ss a";

      super.setMapper(mapper);
   }
}

Input date: 09 Sep, 2014 11:00:00 AM

Error: com.fasterxml.jackson.databind.exc.InvalidFormatException: Can not construct instance of java.util.Date from String value '09 Sep, 2014 11:00:00 AM': not a valid representation (error: Failed to parse Date value '09 Sep, 2014 11:00:00 AM': Can not parse date "09 Sep, 2014 11:00:00 AM": not compatible with any of standard forms ("yyyy-MM-dd'T'HH:mm:ss.SSSZ", "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", "EEE, dd MMM yyyy HH:mm:ss zzz", "yyyy-MM-dd"))

I came across this workaround but if I use this then I have to annotate every date field in my app which I feel is an overhead.

I am not able to figure out what I am doing wrong.

Any help would be appreciated.

Thanks.


回答1:


I got the same error, this solved my problem

mapper.setDateFormat(myDateFormat)

http://wiki.fasterxml.com/JacksonFAQDateHandling



来源:https://stackoverflow.com/questions/25793322/jackson-2-3-2-issue-with-deserializing-a-date-despite-of-setting-the-date-forma

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!