欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

@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í),可以通過(guò)反序列化注解處理。
  • (比如將前端傳遞的主鍵集合轉(zhuǎn)換成用逗號(hào)分隔的字符串)

使用示例

假如前端頁(yè)面中選擇多條數(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)為L(zhǎng)ist<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中數(shù)組轉(zhuǎn)換為列表的兩種實(shí)現(xiàn)方式(超簡(jiǎn)單)

    Java中數(shù)組轉(zhuǎn)換為列表的兩種實(shí)現(xiàn)方式(超簡(jiǎn)單)

    本文介紹了在Java中將數(shù)組轉(zhuǎn)換為列表的兩種常見(jiàn)方法使用Arrays.asList和Java8的Stream API,Arrays.asList方法簡(jiǎn)單易用,但返回的列表是固定大小的;而使用Stream API可以實(shí)現(xiàn)更靈活的操作,如過(guò)濾和映射,根據(jù)具體需求選擇合適的方法,感興趣的朋友一起看看吧
    2025-03-03
  • Java設(shè)計(jì)模式之工廠方法模式詳解

    Java設(shè)計(jì)模式之工廠方法模式詳解

    工廠方法模式(FACTORY METHOD)是一種常用的類創(chuàng)建型設(shè)計(jì)模式,此模式的核心精神是封裝類中變化的部分,提取其中個(gè)性化善變的部分為獨(dú)立類,通過(guò)依賴注入以達(dá)到解耦、復(fù)用和方便后期維護(hù)拓展的目的。它的核心結(jié)構(gòu)有四個(gè)角色,分別是抽象工廠、具體工廠、抽象產(chǎn)品、具體產(chǎn)品
    2022-08-08
  • 解決java.lang.Error: Unresolved compilation problems:問(wèn)題

    解決java.lang.Error: Unresolved compilation pro

    這篇文章主要介紹了解決java.lang.Error: Unresolved compilation problems:問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • 淺談web項(xiàng)目讀取classpath路徑下面的文件

    淺談web項(xiàng)目讀取classpath路徑下面的文件

    這篇文章主要介紹了淺談web項(xiàng)目讀取classpath路徑下面的文件,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-01-01
  • IDEA中將SpringBoot項(xiàng)目提交到git倉(cāng)庫(kù)的方法步驟

    IDEA中將SpringBoot項(xiàng)目提交到git倉(cāng)庫(kù)的方法步驟

    本文主要介紹了IDEA中將SpringBoot項(xiàng)目提交到git倉(cāng)庫(kù)的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • IDEA正則表達(dá)式全局搜索圖文教程

    IDEA正則表達(dá)式全局搜索圖文教程

    當(dāng)您要搜索和替換特定的文本模式時(shí),請(qǐng)使用正則表達(dá)式,下面這篇文章主要給大家介紹了關(guān)于IDEA正則表達(dá)式全局搜索的相關(guān)資料,文中通過(guò)代碼以及圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2024-08-08
  • WebClient拋UnsupportedMediaTypeException異常解決

    WebClient拋UnsupportedMediaTypeException異常解決

    這篇文章主要為大家介紹了WebClient拋UnsupportedMediaTypeException異常的解決方案,文中給大家介紹了六中方案,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2022-02-02
  • 詳細(xì)介紹Java關(guān)鍵字throw?throws?Throwable的用法與區(qū)別

    詳細(xì)介紹Java關(guān)鍵字throw?throws?Throwable的用法與區(qū)別

    這篇文章主要介紹了java中throws與throw及Throwable的用法和區(qū)別,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04
  • SpringBoot中HTTP請(qǐng)求不通的原因級(jí)解決方法

    SpringBoot中HTTP請(qǐng)求不通的原因級(jí)解決方法

    HTTP 請(qǐng)求是指從客戶端到服務(wù)器的請(qǐng)求消息,對(duì)于一個(gè) Spring Boot 項(xiàng)目而言,服務(wù)器就是 Spring Boot,客戶端就是用戶本地的瀏覽器,但是會(huì)遇到SpringBoot HTTP請(qǐng)求不通的問(wèn)題,本文介紹了一些常見(jiàn)問(wèn)題及解決方法,需要的朋友可以參考下
    2025-02-02
  • Spring注解配置IOC,DI的方法詳解

    Spring注解配置IOC,DI的方法詳解

    這篇文章主要為大家介紹了vue組件通信的幾種方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-01-01

最新評(píng)論