国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Springboot中LocalDateTime對(duì)象返回給前端,格式化

這篇具有很好參考價(jià)值的文章主要介紹了Springboot中LocalDateTime對(duì)象返回給前端,格式化。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

1.需求

后端日期時(shí)間對(duì)象,是LocalDateTime類型,直接返回前端,是數(shù)組形式
loacltime 返回給前端,spring boot,java
希望以正常的日期時(shí)間字符串格式返回

2.思路

1.@JsonFormat注解
2.消息轉(zhuǎn)化器

3.解決方案

3.1 使用注解(不推薦)

在實(shí)體類的LocalDateTime屬性上面,添加注解

@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createTime;

@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime updateTime;

缺點(diǎn): 每個(gè)日期時(shí)間屬性都要添加,麻煩

3.2 擴(kuò)展SpringMVC框架的消息轉(zhuǎn)化器,實(shí)現(xiàn)返回日期時(shí)間的格式化(推薦)

3.2.1 配置類: config.WebMvcConfiguration

該config已實(shí)現(xiàn)了登錄攔截器,和knife4j生成接口文檔、靜態(tài)資源映射(已從代碼中刪除),
現(xiàn)添加時(shí)間按格式轉(zhuǎn)換功能extendMessageConverters

/**
 * 配置類,注冊(cè)web層相關(guān)組件
 */
@Configuration
@Slf4j
public class WebMvcConfiguration extends WebMvcConfigurationSupport {
    //擴(kuò)展SpringMVC框架的消息轉(zhuǎn)化器,例如實(shí)現(xiàn)返回日期時(shí)間的格式化
    @Override
    protected void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
        log.info("擴(kuò)展消息轉(zhuǎn)換器");
        MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();

        //將java對(duì)象序列化為json數(shù)據(jù),為消息轉(zhuǎn)換器設(shè)置序列轉(zhuǎn)換器
        converter.setObjectMapper(new JacksonObjectMapper());

        //將自己的消息轉(zhuǎn)換器加入容器中
        converters.add(0, converter);
    }
}

思路:參數(shù)獲取到當(dāng)前的消息轉(zhuǎn)換器列表converters,將我們自定義的消息轉(zhuǎn)化器convert添加到converters中,而且要添加到首位,讓它優(yōu)先生效

3.2.2 JacksonObjectMapper類的定義

顯然是個(gè)工具類,位于sky-common模塊的json.JacksonObjectMapper

import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.module.SimpleModule;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalTimeDeserializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateSerializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalTimeSerializer;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;

import static com.fasterxml.jackson.databind.DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES;

/**
 * 對(duì)象映射器:基于jackson將Java對(duì)象轉(zhuǎn)為json,或者將json轉(zhuǎn)為Java對(duì)象
 * 將JSON解析為Java對(duì)象的過程稱為 [從JSON反序列化Java對(duì)象]
 * 從Java對(duì)象生成JSON的過程稱為 [序列化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:ss";
    public static final String DATE_TIME_FORMAT_NO_SECOND = "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);
    }
}

簡(jiǎn)單分析: 先反序列化,再序列化
優(yōu)勢(shì): 一次配置,重復(fù)使用,不需要每個(gè)實(shí)體類的時(shí)間屬性上加注解了

3.2.3 效果

loacltime 返回給前端,spring boot,java

和使用注解是一樣的文章來源地址http://www.zghlxwxcb.cn/news/detail-849574.html

到了這里,關(guān)于Springboot中LocalDateTime對(duì)象返回給前端,格式化的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包