2016-02-26 126 views
-1

根据日期时间和杰克逊,我得到以下错误。我无法找到出路。有什么建议么?如何解决DateTime和Jackson问题?

Caused by: com.fasterxml.jackson.databind.JsonMappingException: No suitable constructor found for type [simple type, class org.joda.time.chrono.ISOChronology]: can not instantiate from JSON object (missing default constructor or creator, or perhaps need to add/enable type information?) 
at [Source: ["[Ljava.lang.Object;",[1,3,["org.joda.time.DateTime",{"era":1,"dayOfYear":57,"dayOfWeek":5,"dayOfMonth":26,"year":2016,"yearOfCentury":16,"centuryOfEra":20,"secondOfDay":19539,"minuteOfDay":325,"hourOfDay":5,"minuteOfHour":25,"secondOfMinute":39,"millisOfSecond":538,"yearOfEra":2016,"weekyear":2016,"monthOfYear":2,"millisOfDay":19539538,"weekOfWeekyear":8,"chronology":["org.joda.time.chrono.ISOChronology",{"zone":["org.joda.time.UTCDateTimeZone",{"fixed":true,"id":"UTC"}]}],"millis":1456464339538,"zone":["org.joda.time.UTCDateTimeZone",{"fixed":true,"id":"UTC"}],"afterNow":false,"beforeNow":true,"equalNow":false}]]]; line: 1, column: 412] (through reference chain: Object[][2]->org.joda.time.DateTime["chronology"]) 
    at com.fasterxml.jackson.databind.JsonMappingException.from(JsonMappingException.java:148) 
    at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeFromObjectUsingNonDefault(BeanDeserializerBase.java:1080) 
    at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:295) 
    at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:142) 
    at com.fasterxml.jackson.databind.jsontype.impl.AsArrayTypeDeserializer._deserialize(AsArrayTypeDeserializer.java:110) 
    at com.fasterxml.jackson.databind.jsontype.impl.AsArrayTypeDeserializer.deserializeTypedFromObject(AsArrayTypeDeserializer.java:58) 
    at com.fasterxml.jackson.databind.deser.AbstractDeserializer.deserializeWithType(AbstractDeserializer.java:131) 
    at com.fasterxml.jackson.databind.deser.SettableBeanProperty.deserialize(SettableBeanProperty.java:521) 
    at com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeAndSet(MethodProperty.java:95) 
    at com.fasterxml.jackson.databind.deser.impl.BeanPropertyMap.findDeserializeAndSet(BeanPropertyMap.java:285) 
    at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:248) 
    at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:136) 
    at com.fasterxml.jackson.databind.jsontype.impl.AsArrayTypeDeserializer._deserialize(AsArrayTypeDeserializer.java:110) 
    at com.fasterxml.jackson.databind.jsontype.impl.AsArrayTypeDeserializer.deserializeTypedFromAny(AsArrayTypeDeserializer.java:68) 
    at com.fasterxml.jackson.databind.deser.std.UntypedObjectDeserializer$Vanilla.deserializeWithType(UntypedObjectDeserializer.java:500) 
    at com.fasterxml.jackson.databind.deser.std.ObjectArrayDeserializer.deserialize(ObjectArrayDeserializer.java:158) 
    at com.fasterxml.jackson.databind.deser.std.ObjectArrayDeserializer.deserialize(ObjectArrayDeserializer.java:17) 
    at com.fasterxml.jackson.databind.jsontype.impl.AsArrayTypeDeserializer._deserialize(AsArrayTypeDeserializer.java:110) 
    at com.fasterxml.jackson.databind.jsontype.impl.AsArrayTypeDeserializer.deserializeTypedFromArray(AsArrayTypeDeserializer.java:50) 
    at com.fasterxml.jackson.databind.deser.std.ObjectArrayDeserializer.deserializeWithType(ObjectArrayDeserializer.java:189) 
    at com.fasterxml.jackson.databind.deser.std.ObjectArrayDeserializer.deserializeWithType(ObjectArrayDeserializer.java:17) 
    at com.fasterxml.jackson.databind.deser.impl.TypeWrappedDeserializer.deserialize(TypeWrappedDeserializer.java:42) 
    at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:3562) 
    at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2578) 
    at com.amazonaws.services.simpleworkflow.flow.JsonDataConverter.fromData(JsonDataConverter.java:96) 
+0

可能重复? http://stackoverflow.com/a/15605404/287138 –

+0

https://stackoverflow.com/questions/27433931/register-objectmapper-in-spring-4-1-3-to-serialize-joda-datetime/27434856# 27434856 –

回答

0

默认情况下jackson没有正确映射JodaTime

退房jackson-datatype-joda项目here

你这个jar添加到类路径之后,你必须通过注册模块:

// less performant 
ObjectMapper mapper = new ObjectMapper(); 
mapper.findAndRegisterModules(); 

// more performant 
ObjectMapper mapper = new ObjectMapper(); 
mapper.registerModule(new new JodaModule()); 
+0

我认为OP正在与JodaTime –

+0

@StefanHaberl谢谢指出,我编辑了我的答案 –

+0

这似乎并不奏效。 :(我仍然得到相同的运行时错误。任何其他建议? –