码农知识堂 - 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. }

  • 相关阅读:
    JDBC与MySQL练习
    精品基于Uniapp+SSM实现的日常饮食管理APP
    算法竞赛进阶指南 0x52 背包
    【Java系列】Java 简介
    Java8实战-总结47
    数据结构HW1
    java写一个自动爬取统计局公开数据的程序
    java处理异常这一篇就够了
    【教学类-14-01】20221113《图形数量统计6*6-2》(大班主题《》)
    快速解析excel
  • 原文地址:https://blog.csdn.net/kanyun123/article/details/126956203
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号