序列化杰克逊的日期列表

时间:2016-07-22 14:20:29

标签: java json serialization jackson date-format

我正在尝试序列化包含日期列表的对象,并且我希望以特定格式(yyyy-MM-dd)序列化为日期(字符串)的JSON列表。

private List<Date> executionDates;

会变得像:

"executionDates": [
  "2016-07-22",
  "2016-07-23",
  "2016-07-24"
]

可以使用注释来完成吗?

提前致谢。

2 个答案:

答案 0 :(得分:10)

我找到了解决方案。我必须在注释中使用属性contentUsing而不是using,如下所示:

@JsonSerialize(contentUsing = JsonDateSerializer.class)

contentUsing 属性用于集合。从课程文档:

  

用于序列化内容的序列化程序类(一个元素   注释属性的集合/数组,映射的值。只能是   用于属性(方法,字段,构造函数),而不是值   类本身(因为它们通常是通用的)。

答案 1 :(得分:0)

尝试这样的事情:

序列化:

@Component
public class JsonDateSerializer extends JsonSerializer<Date>
{
    // ISO 8601
    private static final DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");

    @Override
    public void serialize(Date date, JsonGenerator gen, SerializerProvider provider)
            throws IOException, JsonProcessingException
    {
        String formattedDate = dateFormat.format(date);
        gen.writeString(formattedDate);
    }
}