杰克逊时间戳映射bug?

时间:2014-08-20 05:54:09

标签: java json timestamp jackson

我从移动客户端获取数据作为json文件。

但是,如果只是时间戳,它就无法正常接收数据。 最后,截断了3位数字。

所以日期完全错了。

这是我的来源。

json文件

{
  "startPhotoAddress": "Great Ocean Road, Hordern Vale",
  "createTimeStamp": "1356998400",
  "startPhotoTimeStamp": "1356998430"
}

在控制器中

@RequestMapping(value = "/moment", method = RequestMethod.POST, headers = "Accept=application/json")
public @ResponseBody JsonNode setMomentJson(HttpServletRequest request, @RequestBody Moment moment){

在模型中

import java.sql.Timestamp;

public class Moment{
    private Timestamp createTimeStamp;

    public Timestamp getCreateTimeStamp() {
        return createTimeStamp;
    }

    public void setCreateTimeStamp(Timestamp createTimeStamp) {
        this.createTimeStamp = createTimeStamp;
    }
}

我得到 createTimeStamp:1970-01-17 01:56:38.4

它仅使用13569984来自createTimeStamp的13569984。

如果收到字符串,则不是问题。

请问,问题是什么? 在此先感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

如果您接收时间戳值(以秒为单位,而不是毫秒),则可以使setter接受long类型并将输入值乘以1000,并通过调用构造函数创建Timestamp实例。像这样:

public class Moment{
    private Timestamp createTimeStamp;

    public Timestamp getCreateTimeStamp() {
        return createTimeStamp;
    }

    public void setCreateTimeStamp(long createTimeStamp) {
        this.createTimeStamp = new Timestamp(createTimeStamp * 1000);
    }
}