@JsonDeserialize和@JsonSerialize注解的使用

news2025/1/15 12:55:49

JsonDeserialize注解介绍

@JsonDeserialize:json反序列化注解,作用于setter()方法,将json数据反序列化为java对象。可以理解为用在处理接收的数据上。

使用场景

前端传递的参数与后端实际接收的参数不一致时,可以通过反序列化注解处理。(比如将前端传递的主键集合转换成用逗号分隔的字符串)

使用示例

假如前端页面中选择多条数据,会向后端传递选中的数据对象集合,但是后端期望存储选中的多个数据id用逗号分隔,此时可以用反序列注解。
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、后端接收参数的dto如下图所示,其中临时党支部人员Id接收的是String类型,增加了该反序列化注解。
在这里插入图片描述
3、前端传递参数如下图所示:
在这里插入图片描述

4、后端实际接收到的参数如图所示:

在这里插入图片描述

@JsonSerialize注解

@JsonSerialize:json序列化注解,作用于getter()方法,将java对象序列化为json数据。可以理解为用在处理返回的数据上

使用场景

后端返回前端的参数与前端期望的参数不一致时,可以用个序列化注解处理。(比如数据脱敏、数据格式处理等)

使用示例

假如后端存储附件、图片或者其他文件时,只存了文件key,此时前端反显需要将数据放在list中回显。
1、自定义序列化处理方式

public class FileUploadSeserializer extends JsonSerializer<String> {

    @Override
    public void serialize(String value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
        //将string转为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对象如下图所示,其中其中模板背景期望为附件的Key和name对象集合,在该字段上增加了文件上传序列化注解。
在这里插入图片描述
3、此时返回前端的数据格式为
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/998550.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

innovus: 如何只place不优化?

我正在「拾陆楼」和朋友们讨论有趣的话题&#xff0c;你⼀起来吧&#xff1f; 拾陆楼知识星球 一些ip从模拟转用数字去做&#xff0c;只需要place即可&#xff0c;不需要做任何优化&#xff0c;通常面积都很小&#xff0c;但std cell手摆太累了&#xff0c;工具提供如下命令&a…

Chrome 基于 Wappalyzer 查看网站所用的前端技术栈

1. 找到谷歌商店 https://chrome.google.com/webstore/search/wappalyzer?utm_sourceext_app_menu 2. 搜索 Wappalyzer 3. 添加至Chrome 4. 使用 插件 比如打开 https://www.bilibili.com/ 就可以看到其所以用的前端技术栈了

软件测试下的AI之路(2)

&#x1f60f;作者简介&#xff1a;博主是一位测试管理者&#xff0c;同时也是一名对外企业兼职讲师。 &#x1f4e1;主页地址&#xff1a;【Austin_zhai】 &#x1f646;目的与景愿&#xff1a;旨在于能帮助更多的测试行业人员提升软硬技能&#xff0c;分享行业相关最新信息。…

打工人必装的5款黑科技软件,办公舒适度立刻提升数倍

分享打工人必装的5款黑科技软件&#xff0c;让你高效完成工作&#xff0c;办公舒适度立刻提升数倍。 DroidCam——手机充当电脑摄像头 DroidCam可以让你的手机充当电脑的摄像头&#xff0c;让手机拍摄到的画面实时投送到电脑屏幕上&#xff0c;也可以充当视频聊天的摄像头&…

55、基于 WebFlux 开发 WebSocKet

★ 基于Web Flux开发WebSocket 两步&#xff1a; &#xff08;1&#xff09;实现WebSocketHandler开发WebSocket处理类。 实现该接口时只需要实现Mono handle(WebSocketSession webSocketSession)方法即可。 &#xff08;2&#xff09;使用HandlerMapping和WebSocketHandler…

TypeScript:赋予JavaScript数据类型新的力量,提升编程效率!

&#x1f3ac; 岸边的风&#xff1a;个人主页 &#x1f525; 个人专栏 :《 VUE 》 《 javaScript 》 ⛺️ 生活的理想&#xff0c;就是为了理想的生活 ! ​ &#x1f4da; 前言 TypeScript&#xff1a;扩展JavaScript数据类型&#xff0c;赋予编程更强大的表达能力&#xff01…

bs4库爬取小说工具

学习了爬取天气预报&#xff0c;今天尝试做个爬取小说工具&#xff0c;有时候网上看看小说休闲下&#xff0c;打算保存txt文本文件&#xff0c;方便离线阅读。 第一步&#xff1a;先确定目标网址 网上随便找了本小说&#xff0c;先找到小说目录页面。 网址首页&#xff1a;h…

c语言练习48:总结字符函数和字符串函数

总结字符函数和字符串函数 字符函数 1. 字符分类函数 C语⾔中有⼀系列的函数是专⻔做字符分类的&#xff0c;也就是⼀个字符是属于什么类型的字符的。 这些函数的使⽤都需要包含⼀个头⽂件是 ctype.h 2. 字符转换函数 字符串函数 . strlen的使⽤ •字符串以 \0 作为结束标…

Linux操作系统基础知识

目录 一、什么是Linux 二、如何有一个Linux环境 三、基本的 Linux 命令 1. pwd - 显示当前工作目录 2. ls - 列出文件和目录 3. cd - 切换目录 4. mkdir - 创建目录 5. rm - 删除文件或目录 6. cp - 复制文件或目录 7. mv - 移动文件或目录 8. touch - 创建空文件 9…

智能座舱概述

文章目录 智能座舱智能驾驶一、汽车座舱历经机械化、电子化&#xff0c;向智能化不断演进二、智能座舱的定义&#xff1a;车内升级车外互联1.从车内看2.从车外看 三、电子座舱、智能助理、人机共驾、第三生活空间 智能座舱智能驾驶 智能汽车以“座舱”“底盘”上下两大智能化系…

短视频去水印

一、使用方法 打开短视频APP&#xff0c; 选择要下载的视频&#xff0c;点击右下角分享按钮&#xff0c;在分享弹框中点击“复制链接” 将刚才复制的链接粘贴到下面的输入框&#xff08;中文可以不用去掉&#xff09; 二、短视频解析王源码 public function analysis($video…

音视频技术开发周刊 | 310

每周一期&#xff0c;纵览音视频技术领域的干货。 新闻投稿&#xff1a;contributelivevideostack.com。 学术头条 | 基于网络科学的人工智能揭示基因信息如何利用单细胞塑造形体 近日&#xff0c;由清华大学脑与智能实验室复杂网络智能中心&#xff08;CCNI&#xff09;主任Ca…

监听对象中属性变化(一个或多个属性、全部属性)

一、数据监听器 什么是数据监听器 数据监听器用于监听和响应任何属性和数据自动的变化&#xff0c;从而执行特定的操作。它的作用类似于vue中的watch侦听器。在小程序中&#xff0c;基本语法格式如下&#xff1a; Component({observers: {字段A&#xff0c;字段B: function(字…

计算机丢失msvcp140.dll是什么意思?msvcp140.dll丢失的解决方法

在使用计算机的过程中&#xff0c;我们可能会遇到各种奇葩的问题。其中&#xff0c;一个常见的问题是计算机提示丢失msvcp140.dll。这个文件是Microsoft Visual C 2015 Redistributable的一部分&#xff0c;通常用于支持一些软件&#xff08;如游戏、办公软件等&#xff09;的运…

遗忘因子递推最小二乘参数估计(FFRLS)

基于遗忘因子的最小二乘法电池参数辨识 最小二乘法是系统辨识中最常用的一种估算方法。为了克服最小二乘法存在”数据饱和”的问题&#xff0c;我们通常采用含有遗忘因子的递推最小二乘法(Forgetting Factor Recursive Least Square,FFRLS)算法进行电池模型的参数辨识。 1、二…

图片码二次渲染绕过

目录 一、环境 1、代码 2、文件处理方式 3、图片码的制作 二、绕过图片重构 1、可行性分析 2、数据比对 3、完成绕过 一、环境 以upload-labs靶场第十七关为例 1、代码 源码为&#xff1a; <?php include ../config.php; include ../head.php; include ../menu.…

管理类联考——数学——汇总篇——知识点突破——应用题——分段计费

👊 分段计费是指不同的范围对应着不同的计费方式,在实际中应用很广泛,比如电费,水费、邮费、个税、话费、出租车费、销售提成等等。解题思路的关键点有两个,一个是先计算每个分界点的值,确定所给的数值落入哪个范围;另外,对应选取正确的计费表达式,按照所给的标准进…

腾讯云CVM S5服务器性能测评和租用价格1年和五年

腾讯云服务器CVM五年时长&#xff0c;2核2G服务器5年1728元、2核4G1M带宽五年3550、4核8G服务器6437元五年&#xff0c;CVM标准型S5实例可选2核2G、2核4G和4核8M&#xff0c;公网带宽可1M、3M和5M&#xff0c;系统盘为50G高性能云硬盘&#xff0c;S5云服务器CPU采用Intel Xeon …

模电课设:用Multisim简单了解二极管

1 课设内容 1&#xff09;测试二极管伏安特性电路&#xff1b; 2&#xff09;二极管的整流电路及负载对输出电压和纹波的影响&#xff1b; 2 模型搭建 电路一&#xff1a;测试二极管伏安特性的电路如下图所示&#xff0c;结构十分简单&#xff0c;直流电源串联上二极管组成一…

windows10搭建llama大模型

背景 随着人工时代的到来及日渐成熟&#xff0c;大模型已慢慢普及&#xff0c;可以为开发与生活提供一定的帮助及提升工作及生产效率。所以在新的时代对于开发者来说需要主动拥抱变化&#xff0c;主动成长。 LLAMA介绍 llama全称&#xff1a;Large Language Model Meta…