杰克逊2.3.2:反序列化日期的问题,尽管将日期格式设置为ObjectMapper [英] Jackson 2.3.2: Issue with deserializing a Date despite of setting the date format to ObjectMapper

查看:1782
本文介绍了杰克逊2.3.2:反序列化日期的问题,尽管将日期格式设置为ObjectMapper的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述



在创建我的json提供程序之后,序列化工作正常,但反序列化仍然不起作用。 p>

我的JsonProvider类:

  @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);
}
}

输入日期:2014年9月9日11:00:00 AM



错误:
com.fasterxml.jackson.databind.exc.InvalidFormatException:不能从String值'09构造java.util.Date的实例2014年9月11日11:00:00 AM':无效表示(错误:无法解析日期值'09 Sep,2014 11:00:00 AM':无法解析日期09 Sep,2014 11:00:00 AM:不符合任何标准格式(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))



我发现了这个解决方法,但如果我使用这个,那么我必须注释我的每个日期字段应用程序,我觉得是一个开销。



我a不能弄清楚我在做错什么。



任何帮助将不胜感激。



谢谢。

解决方案

我有同样的错误,这解决了我的问题



mapper.setDateFormat(myDateFormat)



http://wiki.fasterxml.com/JacksonFAQDateHandling


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.

解决方案

I got the same error, this solved my problem

mapper.setDateFormat(myDateFormat)

http://wiki.fasterxml.com/JacksonFAQDateHandling

这篇关于杰克逊2.3.2:反序列化日期的问题,尽管将日期格式设置为ObjectMapper的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆