映射到 JSON 杰克逊的日期格式

2022-08-31 06:33:59

我有一个来自API的日期格式,如下所示:

"start_time": "2015-10-1 3:00 PM GMT+1:00"

这是 YYYY-DD-MM HH:MM 上午/下午 GMT 时间戳。我正在将此值映射到POJO中的日期变量。显然,它显示转换错误。

我想知道2件事:

  1. 使用 Jackson 进行转换时需要使用的格式是什么?“日期”是一个好的字段类型吗?
  2. 通常,有没有办法在 Jackson 将变量映射到 Object 成员之前处理变量?例如,更改格式,计算等。

答案 1

从Jackson v2.0开始,您可以直接在对象成员上使用@JsonFormat注释;

@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm a z")
private Date date;

答案 2

使用 Jackson 进行转换时需要使用的格式是什么?“日期”是一个好的字段类型吗?

Date是用于此的精细字段类型。您可以使用以下命令轻松解析 JSON:ObjectMapper.setDateFormat

DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm a z");
myObjectMapper.setDateFormat(df);

通常,有没有办法在 Jackson 将变量映射到 Object 成员之前处理变量?例如,更改格式,计算等。

是的。您有几个选项,包括实现 自定义 ,例如 扩展 。这是一个良好的开端。JsonDeserializerJsonDeserializer<Date>