我有来自API的Date格式,如下所示:
"start_time": "2019-10-1 3:00 PM GMT+1:00"
这是YYYY-DD-MM HH:MM am / pm GMT时间戳。我将此值映射到POJO中的Date变量。显然,其显示转换错误。
我想知道两件事:
与Jackson进行转换时,我需要使用哪种格式?Date是否适合此字段类型?
Date是一个很好的字段类型。你可以使用ObjectMapper.setDateFormat以下命令轻松地使JSON可解析:
ObjectMapper.setDateFormat
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm a z"); myObjectMapper.setDateFormat(df);
通常,是否有一种方法可以在Jackson将变量映射到Object成员之前对其进行处理?诸如更改格式,计算等。
Object
是。你可以选择几种方法,包括实现自定义JsonDeserializer,例如扩展JsonDeserializer<Date>。这是一个好的开始。
JsonDeserializer
JsonDeserializer<Date>
从Jackson v2.0开始,你可以直接在Object成员上使用@JsonFormat注释;
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm a z") private Date date;