对于json全局化,类似日期格式化这方面的需求,可以定义一个全局的类来配置。
@Configuration
public class JacksonConfig {
public static final String PATTERN = "yyyy-MM-dd HH:mm:ss";
@Primary
@Bean
public ObjectMapper objectMapper() {
ObjectMapper objectMapper = new ObjectMapper();
// 设置时区
objectMapper.setTimeZone(TimeZone.getTimeZone("GMT+8"));
objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
objectMapper.disable(DeserializationFeature.ADJUST_DATES_TO_CONTEXT_TIME_ZONE);
objectMapper.enable(JsonGenerator.Feature.WRITE_BIGDECIMAL_AS_PLAIN);
// 设置时间格式
objectMapper.setDateFormat(new SimpleDateFormat(PATTERN));
JavaTimeModule javaTimeModule = new JavaTimeModule();
// 序列化配置,针对java8 时间
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")));
//反序列化配置,针对java8 时间
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)
.registerModule(new Jdk8Module())
.registerModule(new ParameterNamesModule());
return objectMapper;
}
}
这里无论是Date 或者 LocalDatetime 都是格式化成 yyyy-MM-dd HH:mm:ss ,如果有特别的需求,可以在那个类中的那个字段,单独配置上
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss ")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm")
private LocalDateTime time;
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss ")
@JsonFormat(pattern = "yyyy-MM-dd")
private Date date;
{
"code": "provider-a test getBean return",
"age": 19,
"favor": [
"ff",
"kk"
],
"time": "2021-02-02 12:12",
"date": "2022-02-02"
}
网友评论