码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • SpringBoot使用@JsonDeserialize和@JsonSerialize注解的功能简介说明


    转自:

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

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

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

    @JsonDeserializer

    public class ParamToStrDeserializer extends JsonDeserializer {
        @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> {
     
        @Override
        public void serialize(
                List stateList, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
            String join = StringUtils.join(stateList, ",");
            jsonGenerator.writeString(join);
     
        }
    }
    @JsonSerialize(using = MyJsonSerializer.class)
    private List args;
    采用以上方式,前端收到的字符串是一个逗号分隔的字符串
  • 相关阅读:
    高通平台Android 蓝牙调试和配置手册--debug BTsnoop的log
    使用 Git 工具进行项目管理
    C语言基础
    C++图解模板
    MySQL bit类型解析
    15:00面试,15:08就出来了,问的问题有点变态。。。
    知识图谱从入门到应用——知识图谱的存储与查询:基于原生图数据库的知识图谱存储
    Vue学习——props(23)
    MySQL数据库管理
    【JavaScript】Date对象(创建时间对象、常用Date方法总结)
  • 原文地址:https://blog.csdn.net/qq_25073223/article/details/127932189
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号