描述
在后端返回給前端的JSON數(shù)據(jù)中含有日期類(lèi)型的字段時(shí),如何指定該類(lèi)型的日期的顯示格式。
解決方案
使用Spring MVC的消息轉(zhuǎn)換器即可。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-567563.html
- 添加配置類(lèi),并繼承
WebMvcConfigurationSupport
類(lèi),重寫(xiě)extendMessageConverters
/**
* 擴(kuò)展Spring MVC框架的消息轉(zhuǎn)換器
* @param converters
*/
@Override
protected void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
log.info("擴(kuò)展消息轉(zhuǎn)換器...");
//創(chuàng)建一個(gè)消息轉(zhuǎn)換器對(duì)象
MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
//需要為消息轉(zhuǎn)換器對(duì)象設(shè)置一個(gè)對(duì)象轉(zhuǎn)換器,對(duì)象轉(zhuǎn)換器可以將Java對(duì)象序列化為JSON
converter.setObjectMapper(new JacksonObjectMapper());
//將自己的消息轉(zhuǎn)換器加入到相關(guān)容器中,并設(shè)置優(yōu)先級(jí)
converters.add(0, converter);
}
- 自定義對(duì)象轉(zhuǎn)換器
JacksonObjectMapper
,設(shè)置對(duì)應(yīng)日期類(lèi)型的轉(zhuǎn)換格式
/**
* 對(duì)象映射器:基于jackson將Java對(duì)象轉(zhuǎn)為json,或者將json轉(zhuǎn)為Java對(duì)象
* 將JSON解析為Java對(duì)象的過(guò)程稱(chēng)為 [從JSON反序列化Java對(duì)象]
* 從Java對(duì)象生成JSON的過(guò)程稱(chēng)為 [序列化Java對(duì)象到JSON]
*/
public class JacksonObjectMapper extends ObjectMapper {
public static final String DEFAULT_DATE_FORMAT = "yyyy-MM-dd";
public static final String DEFAULT_DATE_TIME_FORMAT = "yyyy-MM-dd HH:mm";
public static final String DEFAULT_TIME_FORMAT = "HH:mm:ss";
public JacksonObjectMapper() {
super();
//收到未知屬性時(shí)不報(bào)異常
this.configure(FAIL_ON_UNKNOWN_PROPERTIES, false);
//反序列化時(shí),屬性不存在的兼容處理
this.getDeserializationConfig().withoutFeatures(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
SimpleModule simpleModule = new SimpleModule()
.addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern(DEFAULT_DATE_TIME_FORMAT)))
.addDeserializer(LocalDate.class, new LocalDateDeserializer(DateTimeFormatter.ofPattern(DEFAULT_DATE_FORMAT)))
.addDeserializer(LocalTime.class, new LocalTimeDeserializer(DateTimeFormatter.ofPattern(DEFAULT_TIME_FORMAT)))
.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(DateTimeFormatter.ofPattern(DEFAULT_DATE_TIME_FORMAT)))
.addSerializer(LocalDate.class, new LocalDateSerializer(DateTimeFormatter.ofPattern(DEFAULT_DATE_FORMAT)))
.addSerializer(LocalTime.class, new LocalTimeSerializer(DateTimeFormatter.ofPattern(DEFAULT_TIME_FORMAT)));
//注冊(cè)功能模塊 例如,可以添加自定義序列化器和反序列化器
this.registerModule(simpleModule);
}
}
隨后問(wèn)題將會(huì)被解決。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-567563.html
到了這里,關(guān)于使用Spring MVC的消息轉(zhuǎn)換器設(shè)置日期格式的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!