Java 8 date/time type `java.time.LocalDateTime` not supported by default:日期序列化問題
jackson默認不支持java8 LocalDateTime的序列化和反序列化,那控制檯也顯示瞭解決的辦法,只不過並不全。
解決辦法一:將實體類中的LocalDateTime轉爲Date類型
解決辦法二:
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
<version>2.13.0</version>
</dependency>
通過註解指定
@TableField("update_time")
@ApiModelProperty("更新時間")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") //此註解用來接收字符串類型的參數封裝成LocalDateTime類型
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8", shape = JsonFormat.Shape.STRING) //此註解將date類型數據轉成字符串響應出去
@JsonDeserialize(using = LocalDateTimeDeserializer.class) // 反序列化
@JsonSerialize(using = LocalDateTimeSerializer.class) // 序列化
private LocalDateTime updateTime;
@TableField("create_time")
@ApiModelProperty("添加時間")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm") //此註解用來接收字符串類型的參數封裝成LocalDateTime類型
@JsonFormat(pattern = "yyyy-MM-dd HH:mm",timezone = "GMT+8", shape = JsonFormat.Shape.STRING) //此註解將date類型數據轉成字符串響應出去
@JsonDeserialize(using = LocalDateTimeDeserializer.class) // 反序列化
@JsonSerialize(using = LocalDateTimeSerializer.class) // 序列化
private LocalDateTime createTime;
配置全局
@Configuration
public class MvcConfig implements WebMvcConfigurer {
@Override
public void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
MappingJackson2HttpMessageConverter messageConverter = new MappingJackson2HttpMessageConverter();
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
objectMapper.registerModule(new JavaTimeModule());
messageConverter.setObjectMapper(objectMapper);
converters.add(0, messageConverter);
}
}
解決辦法三:
用阿里的FastJson替換ObjectMapper