Jackson ObjectMapper
сериализует как Date
, так и Timestamp
как Long
в версии 2.9.x , тогда как Date сериализуется как Formatted String
в 2.6.x и Timestamp
как Long
в версии ** 2.6.x * по умолчанию.
Пример:
case class Test(date: java.sql.Date, tmp: java.sql.Timestamp)
val test = Test(new java.sql.Date(1588892400000L), new Timestamp(1588892400000L))
writeValueAsString(test)
{"date":"2020-05-08","tmp":1588892400000}//Version 2.6.x
{"date":1588892400000,"tmp":1588892400000}//Version 2.9.x
Но я хочу сохранить поведение версии 2.6.x в 2.9.x версия.
Я пробовал disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS)
, но затем он конвертирует Date
и TimeStamp
в Formatted String
(как показано ниже).
{"date":"2020-05-08","tmp":"2020-05-07T23:00:00.000+0000"}
Если я установите DateFormatter **, затем он преобразует оба в один и тот же формат.
setDateFormat(new SimpleDateFormat("yyyy-MM-dd"))`
{"date":"2020-05-08","tmp":"2020-05-08"}
** Я только что попробовал, но я не хочу устанавливать DateFormatter (даже если он работает), потому что он будет использоваться для десериализация также при другом формате даты ввода.
Есть ли способ добиться этого?