如何在Spring Boot中全局设置JSON的日期格式?
时间: 2024-09-10 17:04:31 浏览: 63
Spring Boot项目维护全局json数据代码实例
在Spring Boot中全局设置JSON日期格式主要通过配置`HttpMessageConverters`来实现,通常使用`MappingJackson2HttpMessageConverter`来定制JSON的序列化和反序列化规则。以下是具体的步骤:
1. 创建一个配置类,并使用`@Configuration`注解标注该类为Spring配置类。
2. 在配置类中使用`@Bean`注解创建并返回一个`MappingJackson2HttpMessageConverter`的Bean实例。
3. 在该实例中获取到`ObjectMapper`对象,然后配置`ObjectMapper`的`dateFormat`属性。你可以设置为`SimpleDateFormat`,并指定你希望的日期格式。
4. 将这个`MappingJackson2HttpMessageConverter`实例添加到`HttpMessageConverters`中。
下面是一个简单的代码示例:
```java
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateSerializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
ObjectMapper objectMapper = new ObjectMapper();
// 设置日期时间格式
DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
DateTimeFormatter datetimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
JavaTimeModule module = new JavaTimeModule();
module.addDeserializer(LocalDate.class, new LocalDateDeserializer(dateFormatter));
module.addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(datetimeFormatter));
module.addSerializer(LocalDate.class, new LocalDateSerializer(dateFormatter));
module.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(datetimeFormatter));
objectMapper.registerModule(module);
objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
converter.setObjectMapper(objectMapper);
converters.add(converter);
}
}
```
在上面的配置中,`yyyy-MM-dd`和`yyyy-MM-dd HH:mm:ss`分别是日期和日期时间的格式化字符串。通过自定义`DateTimeFormatter`和`JavaTimeModule`,我们可以指定日期和时间的序列化和反序列化方式。
阅读全文