3

我想知道是否可以使用 Jackson 将 JodaDateTime对象序列化为 ISO8601String而无需创建自定义JsonSerializer<DateTime>.

当然,这是一个足够常见的函数,它内置在某个地方的库中?我能找到的最接近的是 a SerializationFeature.WRITE_DATES_AS_TIMESTAMPS,但这似乎只适用于Date对象。

编辑:

我找到了这个类: ISO8601DateFormat,但是当我尝试以下代码时,我没有得到 ISO8601 字符串:

ObjectMapper mapper = new ObjectMapper();
mapper.setDateFormat(new ISO8601DateFormat());
mapper.writer().writeValueAsString(DateTime.now());

看起来杰克逊没有平等对待 Date 和 DateTime 对象。

更新:

我最终为 ISO8601 DateTime 字符串编写了一个自定义序列化程序。

4

1 回答 1

2

我自己没有尝试过,但看起来你应该能够做到这一点

// Set the date format to the desired (in this case, ISO8601)
objectMapper.getDeserializationConfig().setDateFormat(myDateFormat);

// or, as of Jackson 1.8, use
ObjectMapper#withDateFormat(myDateFormat)

自从

从 1.4 版开始,Jackson 提供了对 Joda Time 数据类型的一些支持:基本上,它DateTime可以像java.util.Date处理方式一样自动序列化/反序列化。

当前的 API 调用是:

.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
于 2012-07-19T13:27:14.970 回答