杰克逊日期格式与@JsonFormat?

时间:2014-06-10 13:55:12

标签: java json jackson

我想序列化具有特定格式的POJO的某些日历字段。

没有注释,这样的字段:

private Calendar timestamp1;
private Calendar timestamp2;

生成这样的JSON:

{ ..., timestamp1: 1402402106000, timestamp2: 1402488595000, ... }

我想添加一个格式化为字符串的字段,因为它实际上将一天视为24小时单位,而不是特定的时刻。但是当我添加带注释的新字段时:

@JsonFormat(pattern = "yyyy-MM-dd")
private Calendar oneDay;

我希望得到像这样的JSON:

{ ..., timestamp1: 1402402106000, timestamp2: 1402488595000, oneDay: "2014-06-12", ... }

相反,我得到了以下异常:

com.fasterxml.jackson.databind.JsonMappingException: 
    Cannot format given Object as a Date 
    (through reference chain: java.util.HashMap["data"]->java.util.ArrayList[0]-myPojo["oneDay"])

我做错了什么?

我使用Jackson 2.2.0

1 个答案:

答案 0 :(得分:5)

以下是我使用的内容:@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd")

这适合我。