Java日期对象的默认Jsonb序列化格式是什么

时间:2020-03-06 12:12:32

标签: java date jsonb

jsonb默认用于Java api的各种日期对象的日期/时间格式是什么?

例如,javascript的new Date().toJSON()产生的输出包含我希望使用Jsonb解析到ZonedDateTime字段的第二个分数,但是默认的序列化程序不支持第二个分数。

我必须指定自定义格式来映射javascript Date吗?

1 个答案:

答案 0 :(得分:0)

Jsonb spec指定了3.5日期:

中应支持的默认映射实现。

实现必须支持以下标准Java日期/时间类的绑定:

  • java.util.Date
  • java.util.Calendar
  • java.util.GregorianCalendar
  • java.util.TimeZone
  • java.util.SimpleTimeZone
  • java.time.Instant
  • java.time.Duration
  • java.time.Period
  • java.time.LocalDate
  • java.time.LocalTime
  • java.time.LocalDateTime
  • java.time.ZonedDateTime
  • java.time.ZoneId
  • java.time.ZoneOffset
  • java.time.OffsetDateTime
  • java.time.OffsetTime

javaindeed article列出了用于它们的各种格式化程序以及示例输出:

{
  "date":               "2016-07-27T23:07:41",
  "calendar":           "2016-07-27T23:07:41.782+02:00[Europe/Copenhagen]",
  "gregorianCalendar":  "2016-07-27T23:07:41.801+02:00[Europe/Copenhagen]",
  "timeZone":           "Europe/Copenhagen",
  "simpleTimeZone":     "Europe/Paris",
  "instant":            "2016-07-27T21:07:41.806Z",
  "duration":           "PT96H",
  "period":             "P3M",
  "localDate":          "2016-07-27",
  "localTime":          "23:07:41.807",
  "localDateTime":      "2016-07-27T23:07:41.807",
  "zonedDateTime":      "2016-07-27T23:07:41.807+02:00[Europe/Copenhagen]",
  "zoneId":             "Europe/Copenhagen",
  "zoneOffset":         "+03:30",
  "offsetDateTime":     "2016-07-27T23:07:41.807+02:00",
  "offsetTime":         "23:07:41.807+02:00",
}

在我的情况下,将从JavaScript的java.time.Instant输出字符串中正确反序列化一个Date.toJSON()实例。