Vanilla Jackson没有办法从任何JSON字符串值反序列化LocalDateTime对象.
你有几个选择.您可以创建并注册自己的JsonDeserializer,它将使用LocalDateTime#parse.
class ParseDeserializer extends StdDeserializer {
public ParseDeserializer() {
super(LocalDateTime.class);
}
@Override
public LocalDateTime deserialize(JsonParser p, DeserializationContext ctxt) throws IOException, JsonProcessingException {
return LocalDateTime.parse(p.getValueAsString()); // or overloaded with an appropriate format
}
}
...
@JsonSerialize(using = ToStringSerializer.class)
@JsonDeserialize(using = ParseDeserializer.class)
private LocalDateTime initiationDate;
或者,您可以将Jackson’s java.time extension添加到类路径中,并使用ObjectMapper注册相应的模块.
objectMapper.registerModule(new JavaTimeModule());
让杰克逊为你做转换.在内部,它使用LocalDateTime#parse和其中一种标准格式.幸运的是,它支持像
2016-05-11T17:32:20.897
盒子外面.