码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • @JsonDeserialize集合解析实例


    @JsonDeserialize 和 @JsonSerialize 基本使用 介绍的博客比较多:

    https://blog.csdn.net/yage124/article/details/107321339/icon-default.png?t=M85Bhttps://blog.csdn.net/yage124/article/details/107321339/https://www.h5w3.com/249702.htmlicon-default.png?t=M85Bhttps://www.h5w3.com/249702.html上面是两种常见的反序列化。

    现在的情况是:

    前端传递的是字符串集合,后端接收的是集合中的类:

    前端传递参数:

    {
      "applyTimeSection": ["2020-02-19 08:11:11","2020-02-19 08:20:11"]
    }

     后端接收:

    private List applyTimeSection;

    通过一些基础使用我们知道 使用@JsonDeserialize反反序列化,需要实现自定义反序列化类。

    1. import com.fasterxml.jackson.core.JsonParser;
    2. import com.fasterxml.jackson.core.JsonProcessingException;
    3. import com.fasterxml.jackson.databind.DeserializationContext;
    4. import com.fasterxml.jackson.databind.JsonDeserializer;
    5. import org.springframework.util.ObjectUtils;
    6. import java.io.IOException;
    7. import java.time.Instant;
    8. import java.time.LocalDateTime;
    9. import java.time.ZoneOffset;
    10. import java.time.format.DateTimeFormatter;
    11. import java.util.ArrayList;
    12. import java.util.Collections;
    13. import java.util.Date;
    14. import java.util.List;
    15. /**
    16. * 将List 转换为 List
    17. */
    18. public class Strings2Dates extends JsonDeserializer> {
    19. @Override
    20. public List deserialize(JsonParser p, DeserializationContext ctxt) throws IOException, JsonProcessingException {
    21. if (ObjectUtils.isEmpty(p)) {
    22. return Collections.emptyList();
    23. }
    24. // 对于集合类型getText()方法是不行的
    25. // p.getText()
    26. // 此处是重点:VO对应的属性是什么类型,此处的参数就什么类型
    27. List list = p.readValueAs(List.class);
    28. List dates = new ArrayList<>();
    29. DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
    30. for (String date : list) {
    31. LocalDateTime parse = LocalDateTime.parse(date, dateTimeFormatter);
    32. Instant instant = parse.toInstant(ZoneOffset.ofHours(8));
    33. dates.add(Date.from(instant));
    34. }
    35. return dates;
    36. }
    37. }

    定义了反序列化类,此时我们就可以在VO对应的属性的setter方法上添加注解即可。

    1. @JsonDeserialize(using = Strings2Dates.class)
    2. public void setApplyTimeSelection(List applyTimeSelection) {
    3. this.applyTimeSelection = applyTimeSelection;
    4. }

  • 相关阅读:
    电商平台和短视频平台在直播带货中有哪些差异
    k8s day07
    C++语言基础Day3-内联函数
    为何学linux及用处
    实验30:避障传感器实验
    mongodb通过mongoexport命令导出数据
    04-云计算安全
    JVM基础 -> 什么是STW?
    【chainlit】使用chainlit部署chatgpt
    Springboot使用webupload大文件分片上传(包含前后端源码)
  • 原文地址:https://blog.csdn.net/kanyun123/article/details/126956203
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | 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号