LocalDateTime未序列化为时间戳

时间:2016-12-21 08:05:31

标签: java jackson

我正在使用jackson-datatype-jsr310来支持Java 8时间数据类型。

我创建了一个像这样的ObjectMapper:

ObjectMapper objectMapper = new ObjectMapper();
objectMapper.configure(SerializationFeature.WRITE_DATE_TIMESTAMPS_AS_NANOSECONDS, false);
objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, true);
objectMapper.registerModule(new JavaTimeModule());

Foo foo = new Foo();
LocalDateTime t = LocalDateTime.now();
foo.setT1(Date.from(t.toInstant(ZoneOffset.UTC)));
foo.setT2(Timestamp.valueOf(t));
foo.setT3(t);

System.out.println(objectMapper.writeValueAsString(foo));

然后解析了LocalDateTime,然后我得到了[2016,12,21,15,53,57,178]而不是1482306837178

这是我的测试模型类Foo

public class Foo {

    private Date t1;

    private Timestamp t2;

    private LocalDateTime t3;

    // Getters & Setters
}

我看到问题Jackson Java 8 DateTime serialisation,问题所有者获得了像1421261297.356000000这样的序列化字符串。我不知道怎么做到这一点。我正在使用与datatype-jsr310相同的jackson 2.8.5。

1 个答案:

答案 0 :(得分:4)

来自Jackson Modules Datetime文档:

  

LocalDate,LocalTime,LocalDateTime和OffsetTime,它们无法移植到时间戳,而是在启用WRITE_DATES_AS_TIMESTAMPS时表示为数组。

完整文档页面here