查看到json字符串中时间部分格式如下:
{"email":"","createDate":{"date":19,"hours":0,"seconds":0,"month":4,"timezoneOffset":-480,"year":114,"minutes":0,"time":1400428800000,"day":1}}
执行转换:
ObjectMapper objectMapper = new ObjectMapper();
t = objectMapper.readValue(jsonStr,obj); //obj为pojo.getClass()
报错如下:
org.codehaus.jackson.map.JsonMappingException: Can not deserialize instance of java.util.Date out of START_OBJECT token
at [Source: java.io.StringReader@2972d68f; line: 1, column: 325]
at org.codehaus.jackson.map.JsonMappingException.from(JsonMappingException.java:160)
at org.codehaus.jackson.map.deser.StdDeserializationContext.mappingException(StdDeserializationContext.java:194)
at org.codehaus.jackson.map.deser.StdDeserializer._parseDate(StdDeserializer.java:456)
at org.codehaus.jackson.map.deser.DateDeserializer.deserialize(DateDeserializer.java:26)
at org.codehaus.jackson.map.deser.DateDeserializer.deserialize(DateDeserializer.java:17)
at org.codehaus.jackson.map.deser.SettableBeanProperty.deserialize(SettableBeanProperty.java:149)
日期类转换要么使用jackson默认支持的格斯要么就自己手动指定格式,你这个明显不属于默认支持的格式。。。
你可以通过继承@JsonDeserialize 指定自己的反序列化类进行反序列化
用阿里的fastjson试下~
你这什么鬼日期,序列化成这样的。
解决了。用的net.sf.json序列化java对象生成的json,然后用jackson来反序列化了。改成序列反序列都用net.sf.json就可以了
你应该都用fastjson,或者都用jackson,用net.sf.json实在不是一个好选择。。。你这也叫解决版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。