错误代码
public static void main(String[] args)throws Exception {
ObjectMapper objectMapper = new ObjectMapper();
final LocalDateTime localDateTime = LocalDateTime.now();
final String s = objectMapper.writeValueAsString(localDateTime);
System.out.println(s);
}
错误
在转换时没有设置日期的格式
解决方案一(建议)public static void main(String[] args)throws Exception {
ObjectMapper objectMapper = new ObjectMapper();
//下面两行解决Java8新日期API序列化问题
objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
objectMapper.registerModule(new JavaTimeModule());
final LocalDateTime localDateTime = LocalDateTime.now();
final String s = objectMapper.writeValueAsString(localDateTime);
System.out.println(s);
}
解决方案二
public static void main(String[] args)throws Exception {
ObjectMapper objectMapper = new ObjectMapper();
// 日期和时间格式化
JavaTimeModule javaTimeModule = new JavaTimeModule();
// 设置LocalDateTime的序列化格式
javaTimeModule.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
javaTimeModule.addSerializer(LocalDate.class, new LocalDateSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
javaTimeModule.addSerializer(LocalTime.class, new LocalTimeSerializer(DateTimeFormatter.ofPattern("HH:mm:ss")));
javaTimeModule.addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
javaTimeModule.addDeserializer(LocalDate.class, new LocalDateDeserializer(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
javaTimeModule.addDeserializer(LocalTime.class, new LocalTimeDeserializer(DateTimeFormatter.ofPattern("HH:mm:ss")));
objectMapper.registerModule(javaTimeModule);
final LocalDateTime localDateTime = LocalDateTime.now();
final String s = objectMapper.writeValueAsString(localDateTime);
System.out.println(s);
}