v2.1.1,乔达模块。
我可以在单元测试中使用 objectMapper.readValue(file, pojo .class); 将 json 文件转换为 pojo;
但是,当 Spring RESTTemplate 客户端调用默认的 json 转换器来转换包含具有 Joda 类型(DateTime 或 LocalDate)的域对象的 inputStream 时,它会生成错误:objectMapper.readValue(httpInputMessage.getBody(), javaType)
com.fasterxml.jackson.databind.JsonMappingException:无法反序列化 START_OBJECT 令牌中的 org.joda.time.DateTime 实例 来源:org.mortbay.jetty.HttpParser$Input@46a09b;行:1,列:752 在 com.fasterxml.jackson.databind.JsonMappingException.from(JsonMappingException.java:164) 在 com.fasterxml.jackson.databind.DeserializationContext.mappingException(DeserializationContext.java:599) 在 com.fasterxml.jackson.databind.DeserializationContext.mappingException(DeserializationContext.java:593) 在 com.fasterxml.jackson.datatype.joda.deser.DateTimeDeserializer.deserialize(DateTimeDeserializer.java:51) 在 com.fasterxml.jackson.datatype.joda.deser.DateTimeDeserializer.deserialize(DateTimeDeserializer.java:21) 在 com.fasterxml.jackson.databind.deser.SettableBeanProperty.deserialize(SettableBeanProperty.java:375) 在 com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeUsingPropertyBased(BeanDeserializer.java:559) 在 com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObjectUsingNonDefault(BeanDeserializer.java:393) 在 com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:289) 在 com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:121) 在 com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:226) 在 com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:203) 在 com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:23) 在 com.fasterxml.jackson.databind.deser.SettableBeanProperty.deserialize(SettableBeanProperty.java:375) 在 com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeSetAndReturn(MethodProperty.java:106) 在 com.fasterxml.jackson.databind.deser.BuilderBasedDeserializer.deserializeFromObject(BuilderBasedDeserializer.java:326) 在 com.fasterxml.jackson.databind.deser.BuilderBasedDeserializer.deserialize(BuilderBasedDeserializer.java:143) 在 com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:226) 在 com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:203) 在 com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:23) 在 com.fasterxml.jackson.databind.deser.SettableBeanProperty.deserialize(SettableBeanProperty.java:375) 在 com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeSetAndReturn(MethodProperty.java:106) 在 com.fasterxml.jackson.databind.deser.BuilderBasedDeserializer.deserializeFromObject(BuilderBasedDeserializer.java:
LocalDate 也会出现同样的问题
com.fasterxml.jackson.databind.JsonMappingException:意外令牌 (START_OBJECT),预期 START_ARRAY:预期 JSON 数组、字符串或数字 来源:org.mortbay.jetty.HttpParser$Input@d297c0;行:1,列:51 在 com.fasterxml.jackson.databind.JsonMappingException.from(JsonMappingException.java:164) 在 com.fasterxml.jackson.databind.DeserializationContext.wrongTokenException(DeserializationContext.java:692) 在 com.fasterxml.jackson.datatype.joda.deser.LocalDateDeserializer.deserialize(LocalDateDeserializer.java:50) ……
为什么调用链在一种情况下传递 START_OBJECT 而在另一种情况下传递 START_ARRAY?