小编Bel*_*wal的帖子

Jackson ObjectMapper 的日期和时间戳序列化

默认情况下,JacksonObjectMapperDate和序列Timestamp化为2.9.xLong版本,而 Date则序列化为2.6.x** 2.6.x* 版本。Formatted StringTimestampLong

例子:

case class Test(date: java.sql.Date,  tmp: java.sql.Timestamp)
val test = Test(new java.sql.Date(1588892400000L), new Timestamp(1588892400000L))
writeValueAsString(test)
Run Code Online (Sandbox Code Playgroud)
{"date":"2020-05-08","tmp":1588892400000}//Version 2.6.x 
{"date":1588892400000,"tmp":1588892400000}//Version 2.9.x
Run Code Online (Sandbox Code Playgroud)

但我想在2.9.x版本中保持2.6.x版本的行为。

我尝试过disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS),但随后它将Date&转换TimeStampFormatted String(如下所示)。

{"date":"2020-05-08","tmp":"2020-05-07T23:00:00.000+0000"}
Run Code Online (Sandbox Code Playgroud)

如果我设置 DateFormatter**,那么它会以相同的格式转换两者。

setDateFormat(new SimpleDateFormat("yyyy-MM-dd"))`
{"date":"2020-05-08","tmp":"2020-05-08"}
Run Code Online (Sandbox Code Playgroud)

**我只是treid它,但我不想设置DateFormatter(即使它有效),因为它也将用于输入日期格式不同的反序列化。

有办法实现这一点吗?

java serialization scala jackson fasterxml

4
推荐指数
1
解决办法
1万
查看次数

标签 统计

fasterxml ×1

jackson ×1

java ×1

scala ×1

serialization ×1