杰克逊日期格式与@JsonFormat?
Posted
技术标签:
【中文标题】杰克逊日期格式与@JsonFormat?【英文标题】:Jackson date format with @JsonFormat? 【发布时间】:2014-07-31 07:52:37 【问题描述】:我想用特定格式序列化 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
【问题讨论】:
显示您将“oneDay”存储到Date
的行。
从数据库中读取所有字段
稍后添加了对@JsonFormat
的支持(我认为是2.3.3);所以你可能想试试 Jackson 2.4.0。
我遇到了同样的问题,可以通过更新到 2.4.2 来解决
【参考方案1】:
这是我用过的:@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd")
这对我有用。
【讨论】:
以上是关于杰克逊日期格式与@JsonFormat?的主要内容,如果未能解决你的问题,请参考以下文章
@JsonFormat与@DateTimeFormat注解的使用
Jackson jsonformat始终以UTC格式反序列化