【发布时间】:2015-04-11 14:27:17
【问题描述】:
我在将 java.util.Date 对象编组为时间戳时遇到了问题。理想情况下,时间戳应该是 UTC-0 格式,而不是服务器的本地时区。虽然如果需要,我可以很容易地解决这个问题。
注意:我知道这里有几个关于堆栈溢出的类似主题,但我遇到的每个人要么已经过时(就正在使用的 API 而言),要么与将 Date 对象序列化为字符串有关。
这是我的 POM 文件的摘录:
<dependency>
<groupId>javax.ws.rs</groupId>
<artifactId>javax.ws.rs-api</artifactId>
<version>2.0.1</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-json-jackson</artifactId>
<version>2.15</version>
</dependency>
示例模型类:
public class PersonJSON {
private Date birthDate;
}
预期输出(假设出生日期为 2015 年 2 月 1 日 00:00:00 UTC-0):
{"birthDate":1422748800000}
当前输出:
{"birthDate":"2015-02-01"}
是否可以解决这个问题(最好使用注释)?
解决方案
事实证明,错误是由从 Java.sql.Date 到 Java.util.Date 的隐式转换引起的。转换不会引发异常,并且 sql.Date 在逻辑上扩展了 util.Date 它应该可以工作,但它没有。解决方案是从 Java.sql.Date 中提取时间戳并将其用作 Java.util.Date 构造函数的输入。
如果您确实想更改格式,peeskillet 列出的方法是正确的,前提是您有一个有效的 Java.util.Date 对象。
【问题讨论】:
标签: json jersey jackson jax-rs java.util.date