开发者社区> 问答> 正文

java使用jackson json包将json转pojo,json字符串中含有?400报错

查看到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)

展开
收起
爱吃鱼的程序员 2020-06-07 22:08:50 809 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    日期类转换要么使用jackson默认支持的格斯要么就自己手动指定格式,你这个明显不属于默认支持的格式。。。

    你可以通过继承@JsonDeserialize 指定自己的反序列化类进行反序列化

    用阿里的fastjson试下~
     

    你这什么鬼日期,序列化成这样的。

    解决了。用的net.sf.json序列化java对象生成的json,然后用jackson来反序列化了。改成序列反序列都用net.sf.json就可以了

    你应该都用fastjson,或者都用jackson,用net.sf.json实在不是一个好选择。。。你这也叫解决
    2020-06-07 22:09:04
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载