最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

@JsonDeserialize和@JsonSerialize注解的使用方式

 更新時(shí)間:2024年08月23日 09:18:47   作者:華妃  
這篇文章主要介紹了@JsonDeserialize和@JsonSerialize注解的使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

JsonDeserialize注解介紹

@JsonDeserialize

  • json反序列化注解,作用于setter()方法,將json數(shù)據(jù)反序列化為java對(duì)象。
  • 可以理解為用在處理接收的數(shù)據(jù)上。

使用場(chǎng)景

  • 前端傳遞的參數(shù)與后端實(shí)際接收的參數(shù)不一致時(shí),可以通過反序列化注解處理。
  • (比如將前端傳遞的主鍵集合轉(zhuǎn)換成用逗號(hào)分隔的字符串)

使用示例

假如前端頁面中選擇多條數(shù)據(jù),會(huì)向后端傳遞選中的數(shù)據(jù)對(duì)象集合,但是后端期望存儲(chǔ)選中的多個(gè)數(shù)據(jù)id用逗號(hào)分隔,此時(shí)可以用反序列注解。

1、自定義反序列化的方式

public class CheckedStringDeserializer extends JsonDeserializer<String> {

    @Override
    public String deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
        final List<Map<String, String>> list = p.getCodec().readValue(p, new TypeReference<List<Map<String, String>>>() {
        });
        if (CollUtil.isNotEmpty(list)) {
            final ArrayList<String> objects = new ArrayList<>(list.size());
            list.forEach(e -> objects.add(e.get("id")));
            return CollUtil.join(objects, ",");
        }
        return "";
    }
}

2、后端接收參數(shù)的dto如下圖所示,其中臨時(shí)黨支部人員Id接收的是String類型,增加了該反序列化注解。

3、前端傳遞參數(shù)如下圖所示:

4、后端實(shí)際接收到的參數(shù)如圖所示:

@JsonSerialize注解

@JsonSerialize

  • json序列化注解,作用于getter()方法,將java對(duì)象序列化為json數(shù)據(jù)。
  • 可以理解為用在處理返回的數(shù)據(jù)上

使用場(chǎng)景

后端返回前端的參數(shù)與前端期望的參數(shù)不一致時(shí),可以用個(gè)序列化注解處理。(比如數(shù)據(jù)脫敏、數(shù)據(jù)格式處理等)

使用示例

假如后端存儲(chǔ)附件、圖片或者其他文件時(shí),只存了文件key,此時(shí)前端反顯需要將數(shù)據(jù)放在list中回顯。

1、自定義序列化處理方式

public class FileUploadSeserializer extends JsonSerializer<String> {

    @Override
    public void serialize(String value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
        //將string轉(zhuǎn)為List<Map<String,String>>格式
        Map<String,String> map = new HashMap<>(2);
        List<Map<String,String>> list = new ArrayList<>(1);
        map.put("key", value);
        map.put("name",value);
        list.add(map);
        gen.writeObject(list);
    }
}

2、返回前端的vo對(duì)象如下圖所示,其中其中模板背景期望為附件的Key和name對(duì)象集合,在該字段上增加了文件上傳序列化注解。

3、此時(shí)返回前端的數(shù)據(jù)格式為

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java源碼刨析之ArrayQueue

    Java源碼刨析之ArrayQueue

    在本篇文章當(dāng)中主要給大家介紹一個(gè)比較簡單的JDK為我們提供的容器ArrayQueue,這個(gè)容器主要是用數(shù)組實(shí)現(xiàn)的一個(gè)單向隊(duì)列,整體的結(jié)構(gòu)相對(duì)其他容器來說就比較簡單了
    2022-07-07
  • Java實(shí)現(xiàn)自定義枚舉值校驗(yàn)器的示例代碼

    Java實(shí)現(xiàn)自定義枚舉值校驗(yàn)器的示例代碼

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)自定義枚舉值校驗(yàn)器的相關(guān)資料,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,需要的可以參考一下
    2023-02-02
  • Java編程實(shí)現(xiàn)生成給定范圍內(nèi)不重復(fù)隨機(jī)數(shù)的方法小結(jié)

    Java編程實(shí)現(xiàn)生成給定范圍內(nèi)不重復(fù)隨機(jī)數(shù)的方法小結(jié)

    這篇文章主要介紹了Java編程實(shí)現(xiàn)生成給定范圍內(nèi)不重復(fù)隨機(jī)數(shù)的方法,結(jié)合實(shí)例形式總結(jié)分析了java基于數(shù)學(xué)運(yùn)算與判斷實(shí)現(xiàn)不重復(fù)隨機(jī)數(shù)的生成功能,需要的朋友可以參考下
    2017-07-07
  • java實(shí)現(xiàn)日歷應(yīng)用程序設(shè)計(jì)

    java實(shí)現(xiàn)日歷應(yīng)用程序設(shè)計(jì)

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)日歷應(yīng)用程序設(shè)計(jì),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • 一文詳解如何在SpringMVC的視圖中渲染模型數(shù)據(jù)

    一文詳解如何在SpringMVC的視圖中渲染模型數(shù)據(jù)

    SpringMVC是一個(gè)基于Spring框架的Web框架,它提供了一種方便的方式來處理 HTTP 請(qǐng)求和響應(yīng),在SpringMVC中,視圖是用來渲染模型數(shù)據(jù)的組件,它們負(fù)責(zé)將模型數(shù)據(jù)轉(zhuǎn)換為HTML、JSON、XML等格式的響應(yīng),在本文中,我們將討論如何在SpringMVC中的視圖中渲染模型數(shù)據(jù)
    2023-07-07
  • Java如何通過反射獲取Constructor、Field、Method對(duì)象

    Java如何通過反射獲取Constructor、Field、Method對(duì)象

    反射指的是對(duì)象的反向處理操作,根據(jù)對(duì)象取得對(duì)象的來源信息,在反射的世界里面,看重的不再是一個(gè)對(duì)象,而是對(duì)象身后的組成,下面這篇文章主要給大家介紹了關(guān)于Java如何通過反射獲取Constructor、Field、Method對(duì)象的相關(guān)資料,需要的朋友可以參考下
    2022-06-06
  • Maven和MyBatis框架簡單實(shí)現(xiàn)數(shù)據(jù)庫交互的示例

    Maven和MyBatis框架簡單實(shí)現(xiàn)數(shù)據(jù)庫交互的示例

    本文主要介紹了Maven和MyBatis框架簡單實(shí)現(xiàn)數(shù)據(jù)庫交互的示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-01-01
  • java實(shí)現(xiàn)發(fā)送郵箱驗(yàn)證碼

    java實(shí)現(xiàn)發(fā)送郵箱驗(yàn)證碼

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)發(fā)送郵箱驗(yàn)證碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • java中&和&&的基本區(qū)別與常見的誤用

    java中&和&&的基本區(qū)別與常見的誤用

    &?和&&是Java中用于邏輯運(yùn)算的兩個(gè)運(yùn)算符,&是按位與和邏輯與兼用的運(yùn)算符,而&&僅用于邏輯與運(yùn)算,并具有短路特性,這篇文章主要介紹了java中&和&&的基本區(qū)別與常見的誤用,需要的朋友可以參考下
    2025-02-02
  • Mybatis-Plus 實(shí)戰(zhàn)使用與最佳實(shí)踐

    Mybatis-Plus 實(shí)戰(zhàn)使用與最佳實(shí)踐

    Mybatis作為優(yōu)秀的持久層框架,以其靈活性和可控性贏得了廣大開發(fā)者的青睞,本文將從實(shí)戰(zhàn)角度出發(fā),深入解析Mybatis-Plus的核心功能和最佳實(shí)踐,幫助開發(fā)者快速掌握這一強(qiáng)大的開發(fā)工具,感興趣的朋友跟隨小編一起看看吧
    2025-10-10

最新評(píng)論

昔阳县| 额济纳旗| 海安县| 彩票| 阿城市| 合山市| 华容县| 沈阳市| 池州市| 天柱县| 稷山县| 阿荣旗| 双牌县| 信阳市| 宁都县| 深水埗区| 紫阳县| 克山县| 桃园县| 普宁市| 嘉定区| 安岳县| 铅山县| 武定县| 庆元县| 常德市| 田林县| 应用必备| 儋州市| 南开区| 崇仁县| 湘潭县| 黔江区| 灵台县| 安陆市| 罗田县| 平顶山市| 阳曲县| 淮南市| 台东市| 措美县|