【发布时间】:2014-07-06 23:02:04
【问题描述】:
我正在 GlassFish 4 上使用 Java EE 7 构建 RESTful Web 服务。在序列化包含 java.util.Date 对象的 POJO 时,不包括时区信息。
如何自定义对象序列化,以便 java.util.Dates 包含时区信息?
例如,而不是这个:
{
"id": 1234,
"foo": "2014-05-19T13:53:49.392"
}
我更喜欢这样:
{
"id": 1234,
"foo": "2014-05-19T13:53:49.392+09:30"
}
服务器的时区是 GMT + 09:30。
【问题讨论】:
-
如果你使用 Jackson,你可以使用 ObjectMapper.setDateFormat
-
是的,我刚才切换到 Jackson,它在响应中起作用,但现在在请求正文上解析失败。
-
根据文档,这应该适用于序列化和反序列化。您也可以尝试使用自定义 Deserializer 和 Serializer
-
是的,问题似乎是无法解析的日期异常。显然
yyyy-MM-dd'T'HH:mm:ss.SSSZ无法解析2014-05-20T09:00:00.000+09:30。无论如何,如果我在其他人之前提出整个解决方案,我会将其作为答案发布。 -
我认为您所在时区的冒号是问题所在。请看SimpleDateFormat
标签: java json glassfish jax-rs iso8601