SpringBoot使用@JsonDeserialize和@JsonSerialize注解的功能简介说明

2023-11-15

转自:

SpringBoot使用@JsonDeserialize和@JsonSerialize注解的功能简介说明

下文笔者讲述@JsonDeserialize和@JsonSerialize注解的功能简介说明

SpringMVC
   在SpringMVC
   在Controller中接受请求的数据或返回数据
   我们需使用@JsonDeserialize和@JsonSerialize处理数据

@JsonDeserializer

public class ParamToStrDeserializer extends JsonDeserializer<String> {
    @Override
    public String deserialize(
            JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
        TreeNode treeNode = jsonParser.getCodec().readTree(jsonParser);
        if (treeNode instanceof IntNode) {
            return ((IntNode) treeNode).asText();
        } else if (treeNode instanceof LongNode) {
            return ((LongNode) treeNode).asText();
        } else if (treeNode instanceof ArrayNode) {
//字符串数组,会多出两个引号,需要手动去除
            return StringUtils.replace(StringUtils.join((ArrayNode) treeNode, ","), "\"", "");
        } else if (treeNode instanceof TextNode) {
            return ((TextNode) treeNode).asText();
        }
        return "";
 
    }
}
使用ParamToStrDeserializer的转化
无论传的值是数字
如:【88】或者【"88"】;还是数组
如【[10,20,30]】或者【["10","20","30"]】可统一转化为用逗号分隔的字符串格式 

例:
在需要自动转化的字段上加上注解
@JsonDeserialize(using = ParamToStrDeserializer.class)
private String args;
采用以上注解,则args会自动处理为相应格式

@JsonSerialize

@JsonSerialize的用法,@JsonDeserialize的反向用法。
public class MyJsonSerializer extends JsonSerializer<List<Integer>> {
 
    @Override
    public void serialize(
            List<Integer> stateList, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
        String join = StringUtils.join(stateList, ",");
        jsonGenerator.writeString(join);
 
    }
}
@JsonSerialize(using = MyJsonSerializer.class)
private List<Integer> args;
采用以上方式,前端收到的字符串是一个逗号分隔的字符串
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SpringBoot使用@JsonDeserialize和@JsonSerialize注解的功能简介说明 的相关文章

随机推荐

  • 大文件上传服务器jvm调优,JVM性能调优的6大步骤,及关键调优参数详解

    JVM内存调优 对JVM内存的系统级的调优主要的目的是减小GC的频率和Full GC的次数 算法 1 Full GC编程 会对整个堆进行整理 包括Young Tenured和Perm Full GC由于须要对整个堆进行回收 因此比较慢 所以
  • 【Flutter 2-11】Flutter手把手教程UI布局和Widget——列表ListView

    作者 弗拉德 来源 弗拉德 公众号 fulade me ListView ListView是在移动端非常常见的控件 在大多数的展示场景中都离不开ListView 在Flutter中对ListView的封装也非常好 简单几行代码就可以满足我们
  • 马尔萨斯 ( Malthus)人口指数增长模型&Logistic 模型

    3 要求与任务 从 1790 1990 年间美国每隔 10 年的人口记录如下表所示 用以上数据检验马尔萨斯 Malthus 人口指数增长模型 根据检验结果进一步讨论马尔萨斯 人口模型的改进 并利用至少两种模型来预测美国2010 年的人口数量
  • wandb安装方法及本地部署教程

    文章目录 1 wandb介绍 2 wandb安装 2 1 注册wandb账号 2 2 创建项目并获得密钥 2 3 安装wandb并登录 3 wandb本地部署 3 1 设置wandb运行模式 3 2 云端查看运行数据 4 总结 1 wand
  • 游戏开发unity编辑器扩展知识系列:扩展Hierarchy右键菜单

    代码如下 MenuItem GameObject 生成带图片的Image false 100 public void Test 效果如下 注意 MenuItem的priority参数必须小于50 MenuItem的itemName参数只支持
  • Postman和jmeter的区别(整理)

    1 创建接口用例集 没区别 Postman是Collections Jmeter是线程组 没什么区别 2 步骤的实现 有区别 Postman和jmeter都是创建http请求 a postman请求的请求URL是一个整体 jmeter分成了
  • GPU压力测试篇- TensorFlow

    简介 该文档介绍使用Tensorflow框架 测试 NVIDIA 驱动的常见python 代码 环境信息 编号 软件 软件版本 备注 01 驱动 470 57 02 02 cuda 版本 11 2 03 cudnn 版本 8 1 1 33
  • Qt控件在布局内(QFormLayout、QGridLayout等)的动态添加与删除

    项目场景 在项目开发过程中 比如报警信息的显示 如果将所有的报警信息都添加至布局内 再以控件隐藏与显示的方式进行报警 这种方法无疑是最简单的 但是如果报警种类过多 但往往需要显示的很少 在界面里面去一个个拖控件或者代码添加都太麻烦 这就需要
  • PMP常用英文术语缩写总结(文字版+表格版+图片版)

    PMP常用英文术语缩写总结 文字版 表格版 图片版 文字版 PMBOK Project Management Body of Knowledge 项目管理知识体系 PMI Project Management Institute 项目管理协
  • 数据结构--图的应用--最短路径

    最短路径 两种常见的最短路径问题 一 单源最短路径 用Dijistra迪杰斯特拉 算法 二 所有顶点间的最短路径 用Floyd 弗洛伊德 算法 Dijistra算法 1 初始化 先找出从源点v0到各终点Vk的的直达路径 V0 Vk 即通过一
  • 【element-plus】icon在菜单的使用(二)

    前言 之前觉得升级的icon不好使用是以为不能动态的设置图标 现在发现我错了 升级后的icon同样能满足之前的需求 本篇主要说明一下配置菜单时如何使用icon 一 下载依赖包 因为动态引入的icon随时都会调整 所以之前引入所有的icon最
  • 【满分】【华为OD机试真题2023B卷 JAVA&JS】VLAN资源池

    华为OD2023 B卷 机试题库全覆盖 刷题指南点这里 VLAN资源池 知识点数组字符串 时间限制 1s 空间限制 256MB 限定语言 不限 题目描述 VLAN是一种对局域网设备进行逻辑划分的技术 为了标识不同的VLAN 引入VLAN I
  • C++字符串 处理函数合集

    本博客的内容源自 数据结构 用面向对象方法与C 描述 第二版 的内容 章节4 4 在阅读原文的情况下整理得出的读书笔记 均写在代码的注释中 供大家参考 include
  • HDF5 windows编译 release版本、Debug版本

    由于最近急需的一个项目 需要hdf5库 误打误撞 编译成功 特此记录 1 下载源代码 官网下载地址 https portal hdfgroup org display support HDF5 1 12 2 files 找到如下地址 本人电
  • 设计模式 -- Adapter 适配器模式

    转自 http blog csdn net joyney article details 4000818 以下内容是我和小组的兄弟学习设计模式我做的课件 我整理出来和大家分享 有不妥之处敬请指出 上次做的桥接模式 Bridge 这次是适配器
  • 小程序wxs使用教程

    1 什么是wxs wxs是小程序的一种脚本语言 它类似JavaScript 但是与JavaScript有所不同 wxs是一种数据绑定和逻辑处理的语言 它可以在wxml中使用 并且可以在wxml中直接调用 使用wxs可以实现更高效 更灵活的数
  • Games101,Lecture 13(光线与物体求交,引入包围盒)

    光线追踪 光线追踪更多的用于离线应用 因为一帧一般需要一万个CPU小时 原理 由摄像机发出感应光线 判断与物体相交的点是否可以与 光源连线 无遮挡物 如何判断光线与物体有交点 是管线追踪中较难的部分 光线与物体求交 1 与隐式表示的曲面求交
  • RabbitMQ 端口详解

    4369 epmd 25672 Erlang distribution Epmd 是 Erlang Port Mapper Daemon 的缩写 在 Erlang 集群中相当于 dns 的作用 绑定在4369端口上 5672 5671 AM
  • c++ 定时器_「STM32」定时器中断实验

    在上一篇文章中 STM32 定时器概述 中 定时器可以被人为分为4个大部分 时钟发生器 实际模块 输入捕获 输出比较 而定时器中断实验 我们更多的在操作时钟发射器这个模块 这个应用也是定时器最基本的应用了 时钟选择 内部时钟选择 时钟计算方
  • SpringBoot使用@JsonDeserialize和@JsonSerialize注解的功能简介说明

    转自 SpringBoot使用 JsonDeserialize和 JsonSerialize注解的功能简介说明 下文笔者讲述 JsonDeserialize和 JsonSerialize注解的功能简介说明 SpringMVC 在Spring