Spring   发布时间:2022-04-09  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了使用Jackson将MongoDB日期字段反序列化为Java POJO大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_675_1@使用Spring Boot 1.4.4.RELEASE,将requestBody保存到MongoDB,如下所示:

@H_675_1@
{
    "startTime" : numberLong("1483542955570"),"startDate" : ISODate("2017-01-04T15:15:55.570Z"),"endTime" : numberLong("1483542955570"),"endDate" : ISODate("2017-01-04T15:15:55.570Z")
}
@H_675_1@在将其映射回Java POJO时,我正在尝试以下@L_616_1@.

@H_675_1@
public 
@H_675_1@serialize具有如下返回的日期字段

@H_675_1@
"startDate" : { "$date" : "2017-01-04T15:15:55.570Z"}
@H_675_1@由于$date,Jackson ObjectMapper在解析期间返回以下异常:

@H_675_1@
java.lang.RuntimeException: Error parsing mongoDoc to Pojo : errormessage : {Can not deserialize instance of java.util.Date out of START_OBjeCT token at [source: {
"startTime": 1483542955570,"startDate": {
    "$date": "2017-01-04T15:15:55.570Z"
},"endTime": 1483542955570,"endDate": {
    "$date": "2017-01-04T15:15:55.570Z"
}}; line: 1,column: 381] (through reference chain: com.gofynd.engine.mongo.models.RuleWithDataVO["validity"]->com.gofynd.engine.mongo.models.ValidityVO["startDate"])}
@H_675_1@有没有办法解决这个问题而不使用ODM?
最佳答案
反序列化到Date Jackson期望字符串如“2017-01-04T15:15:55.570Z”.相反,它会看到另一个对象的开始(JSON中的{Char)因此异常.@H_675_1@ @H_675_1@虑指定您的Pojo类和另一个类似于此的MongoDate类:

@H_675_1@
class MongoDate {
    @JsonProperty("$date")
    Date date;
}

class Pojo {
    long startTime;
    long endTime;
    MongoDate startDate;
    MongoDate endDate;
}
@H_675_1@或者,如果您不能/不想@L_720_5@mongoDate类,则可以为Date字段引入自定义反序列化器.在那种情况下Pojo:

@H_675_1@
class Pojo {
    long startTime;
    long endTime;
    @JsonDeserialize(using = MongoDateConverter.class)
    Date startDate;
    @JsonDeserialize(using = MongoDateConverter.class)
    Date endDate;
}
@H_675_1@反序列化器看起来像这样

@H_675_1@
class MongoDateConverter extends JsonDeserializer

大佬总结

以上是大佬教程为你收集整理的使用Jackson将MongoDB日期字段反序列化为Java POJO全部内容,希望文章能够帮你解决使用Jackson将MongoDB日期字段反序列化为Java POJO所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。