JSON中的日期时间字符串如下:
"dateRange": {
"before": "2021-07-15T23:00:00.000Z",
"after": "2021-07-31T22:59:00.000Z"
}
我正在使用Jackson,并且正在编写我的DTO:
class MyClass {
private DateRange dateRange;
class DateRange {
private Long before;
private Long after;
}
}
我想知道什么是最好的方法来让杰克逊反序列化上述字符串毫秒(长)?例如,如果我是手工编码,它将是Instant.parse(dateRange.before).toEpochMilli()
。
注意before
和after
字段在JSON中都是可选的,任何一个都可以缺席,所以考虑将它们建模为Long
而不是long
,这样我就可以检查null。例如:
"dateRange": {}
"dateRange": {
"before": "2021-07-15T23:00:00.000Z"
}
"dateRange": {
"after": "2021-07-15T23:00:00.000Z"
}
// No dateRange prop is also allowed
我在这里看了一下:https://www.baeldung.com/jackson-serialize-dates,但是有很多选择,所以我不确定哪个是最好的?
更新:这似乎工作OK:
class MyClass {
private DateRange dateRange;
class DateRange {
private Date before;
private Date after;
}
}
MyClass myClass = ...
myClass.getDateRange().getBefore().getTime();
您可以使用@JsonFormat
或添加日期格式化程序到对象映射器。这完全取决于您的用例。两者都是不错的选择。如果这是应用程序中需要类似转换的孤立用例,则可以使用@JsonFormat
。但如果它是整个应用程序的标准,我可能会建议在Objectmapper上设置格式化器,以避免在所有类上编写注释。