【三十三】springboot+序列化实现返回值脱敏和返回值字符串时间格式化问题

互相交流入口地址

整体目录:

【一】springboot整合swagger

【二】springboot整合自定义swagger

【三】springboot整合token

【四】springboot整合mybatis-plus

【五】springboot整合mybatis-plus

【六】springboot整合redis

【七】springboot整合AOP实现日志操作

【八】springboot整合定时任务

【九】springboot整合redis实现启动服务时热点数据保存在全局和缓存

【十】springboot整合quartz实现定时任务优化

【十一】springboot整合异步调用并获取返回值

【十二】springboot整合WebService

【十三】springboot整合WebService关于传参数

【十四】springboot整合WebSocket

【十五】springboot整合WebSocket实现聊天室

【十六】RabbitMQ基础篇(下载安装并基础使用,内含各种坑问题)

【十七】RabbitMQ基础篇(延迟队列和死信队列实战)

【十八】springboot实现自定义全局异常处理

【十九】初学Kafka并实战整合SpringCloudStream进行使用

【二十】springboot整合ElasticSearch实战(万字篇)

【二十一】springboot整合过滤器实战

【二十二】springboot整合拦截器实战并对比过滤器

【二十三】springboot整合activiti7(1)实战演示篇

【二十四】springboot整合spring事务详解以及实战

【二十五】springboot使用EasyExcel和线程池实现多线程导入Excel数据

【二十六】springboot整合jedis和redisson布隆过滤器处理缓存穿透

【二十七】springboot实现多线程事务处理

【二十八】springboot之threadLocal参数解析器实现session一样保存当前登录功能 

【二十九】springboot整合logback实现日志管理

【三十】springboot项目上高并发解决示例

【三十一】springboot+easyExcel实现多文件导出压缩包

目录

一、返回值脱敏

二、返回值日期格式化 


        很久没有写小作文了,赶着学子们参加考试的时间,继续记录点小东西,1、返回对象的字符串数据脱敏 ;2、返回对象针对字符串格式的时间的格式化。

一、返回值脱敏

        1、准备返回值对象

       2、准备接口

        3、准备脱敏注解

        4、准备序列化处理类
public class SensitiveInfoSerialize extends JsonSerializer<String> implements ContextualSerializer {private DesensitizationType type;public SensitiveInfoSerialize() {}public SensitiveInfoSerialize(final DesensitizationType type) {this.type = type;}@Overridepublic void serialize(String value, JsonGenerator gen, SerializerProvider serializers) throws IOException {switch (this.type) {case ID_CARD:value = DesensitizedUtil.idCardNum(value, 4, 2);break;case MOBILE_PHONE: {value = DesensitizedUtil.mobilePhone(value);break;}default:break;}gen.writeString(value);}/*** 序列化时获取字段注解属性* @param serializerProvider* @param property* @return* @throws JsonMappingException*/@Overridepublic JsonSerializer<?> createContextual(SerializerProvider serializerProvider, BeanProperty property) throws JsonMappingException {if (property != null) {// 此demo只处理String类型字段if (Objects.equals(property.getType().getRawClass(), String.class)) {SensitiveInfo sensitiveInfo = property.getAnnotation(SensitiveInfo.class);if (sensitiveInfo == null) {sensitiveInfo = property.getContextAnnotation(SensitiveInfo.class);}if (sensitiveInfo != null) {return new SensitiveInfoSerialize(sensitiveInfo.value());}}return serializerProvider.findValueSerializer(property.getType(), property);}return serializerProvider.findNullValueSerializer(null);}}

        实现ContextualSerializer接口后重写的JsonSerializer方法就是为了找到需要处理的属性,而集成JsonSerializer后重写的serialize方法就是为了处理需要处理的属性。DesensitizedUtil是糊涂的工具。就这样就可以了。

        5、演示原本效果

        6、增加注解后效果

二、返回值日期格式化 

        在开发时返回值里的时间一定不只是Date、LocalDateTime、LocalDate,有时候也可能是字符串格式。此时常用的@JsonFormat注解就失去用武之地了,使用上面的方式也可以处理这种情况,下面进行展示。

        1、返回值增加时间字段

        2、原有效果

        3、使用常用的@JsonFormat注解进行处理

        处理字符串的时间以外,其他的时间都能正常处理,下面通过序列化的方式进行处理该字段。

         4、增加字符串日期格式处理注解

        5、准备序列化处理类
public class StringToDateSerialize extends JsonSerializer<String> implements ContextualSerializer {private String sourceFormat;private String targetFormat;public StringToDateSerialize() {}public StringToDateSerialize(final String sourceFormat, final String targetFormat) {this.sourceFormat = sourceFormat;this.targetFormat = targetFormat;}@Overridepublic void serialize(String value, JsonGenerator gen, SerializerProvider serializers) throws IOException {gen.writeString(DateUtil.format(DateUtil.parse(value,sourceFormat), targetFormat));}@Overridepublic JsonSerializer<?> createContextual(SerializerProvider serializerProvider, BeanProperty property) throws JsonMappingException {if (property != null) {if (Objects.equals(property.getType().getRawClass(), String.class)) {StringToDate stringToDate = property.getAnnotation(StringToDate.class);if (stringToDate == null) {stringToDate = property.getContextAnnotation(StringToDate.class);}if (stringToDate != null) {return new StringToDateSerialize(stringToDate.source(),stringToDate.target());}}return serializerProvider.findValueSerializer(property.getType(), property);}return serializerProvider.findNullValueSerializer(null);}}
        6、测试效果

        可看到字符串格式的时间,包括含有T的时间格式都能够成功处理。

        欢迎大佬们评论区讨论。 

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

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

相关文章

【Java每日一题】2.和数最大操作II-动态规划

题目难度&#xff1a;中等 主要提升&#xff1a;for循环思想、动态规划思想、数组操作 一、题目描述&#xff1a; 给你一个整数数组 nums &#xff0c;如果 nums 至少包含 2 个元素&#xff0c;你可以执行以下操作中的任意一个&#xff1a; &#xff08;1&#xff09;选择 n…

Java学习-JDBC(一)

JDBC 概念 JDBC(Java Database Connectivity)Java数据库连接JDBC提供了一组独立于任何数据库管理系统的APIJava提供接口规范&#xff0c;由各个数据库厂商提供接口的实现&#xff0c;厂商提供的实现类封装成jar文件&#xff0c;也就是我们俗称的数据库驱动jar包JDBC充分体现了…

什么是虚拟局域网?快解析有哪些的虚拟化应用功能?

什么是虚拟局域网&#xff1f;从字面上理解就是不是真实存在的局域网。虚拟局域网是将网络用户和设备集中在一起&#xff0c;从而可以对不同地域和商业的需要有一定的支持性。虚拟局域网有它的优点&#xff0c;在使用过程中可以为企业提供更安全、更稳定、更灵活的服务保障体系…

记录jenkins pipeline ,git+maven+sonarqube+打包镜像上传到阿里云镜像仓库

1、阶段视图&#xff1a; 2、准备工作 所需工具与插件 jdk&#xff1a;可以存在多版本 maven&#xff1a;可以存在多版本 sonar-scanner 凭证令牌 gitlab&#xff1a;credentialsId sonarqube:配置在sonarqube208服务中 3、jenkinsfile pipeline {agent anystages {stage(从…

ugpowermill编程入门:从基础到进阶的全面解析

ugpowermill编程入门&#xff1a;从基础到进阶的全面解析 在制造行业中&#xff0c;UG PowerMill编程是一款广泛应用的数控编程软件&#xff0c;它以其高效、精确的加工能力深受工程师们的喜爱。对于初学者来说&#xff0c;如何快速入门并熟练掌握UG PowerMill编程技能是一项重…

Mac怎么读取内存卡 Mac如何格式化内存卡

在今天的数字化时代&#xff0c;内存卡已经成为了我们生活中不可或缺的一部分。对于Mac电脑用户而言&#xff0c;正确地读取和管理内存卡中的数据至关重要。下面我们来看看Mac怎么读取内存卡&#xff0c;Mac如何格式化内存卡的相关内容。 一、Mac怎么读取内存卡 苹果电脑在读…

Base64 编码表 参考

Base64的编码是由下面的64个字符加上一个垫字符"" 一共65个字符集来完成的&#xff0c;他用 4 个 base64 字符去表示 3 个 ASCII 码字符。 Base64字符串判断可参考 golang判断字符串是否base64编码的字符串算法&#xff0c; 可准确判断是或否 附带单元测试用例和模糊…

Python中__面向对象__学习 (上)

目录 一、类和对象 1.类的定义 2.根据对象创建类 二、构造和析构 1.构造方法 &#xff08;1&#xff09;不带参数的构造方法 &#xff08;2&#xff09;带参数的构造方法 2.析构方法 三、重载 1.定制对象的字符串形式 &#xff08;1&#xff09;只重载__str__方法 …

QT Udp广播实现设备发现

测试环境 本文选用pc1作为客户端&#xff0c;pc2&#xff0c;以及一台虚拟机作为服务端。 pc1,pc2(客户端&#xff09;: 虚拟机&#xff08;服务端)&#xff1a; 客户端 原理&#xff1a;客户端通过发送广播消息信息到ip:255.255.255.255(QHostAddress::Broadcast),局域网…

了解Java内存模型(Java Memory Model, JMM)

了解Java内存模型&#xff08;Java Memory Model, JMM&#xff09; Java内存模型&#xff08;Java Memory Model, JMM&#xff09;是Java语言规范中规定的一组规则&#xff0c;定义了多线程程序中变量&#xff08;包括实例字段、静态字段和数组元素&#xff09;的访问方式。JM…

git 大文件上传失败 Please remove the file from history and try again.

根据提示执行命令 --- 查找到当前文件 git rev-list --objects --all | grep b24e74b34e7d482e2bc687e017c8ab28cd1d24b6git filter-branch --tree-filter rm -f 文件名 --tag-name-filter cat -- --all git push origin --tags --force git push origin --all --force

Fort Firewall防火墙工具v3.12.13

软件介绍 Fort Firewall是一款开源系统的免费防火墙&#xff0c;体积小巧、占用空间不大&#xff0c;可以为用户的电脑起到保护作用&#xff0c;该软件可以控制程序访问网络&#xff0c;控制用户的电脑网速&#xff0c;用户可以更轻松便捷的进行网络安全防护&#xff0c;保护系…

c# Attribute特性示范

[MyCustomAttribute("Example")] 中括号写在类前&#xff0c;表示此类具有此特性。 ”property” 译为“属性 Attribute用特性描述 using System;// 定义一个自定义特性 public class MyCustomAttribute : Attribute {public string Value { get; set; }public My…

什么是镜像源

镜像源在计算机领域中是一个重要的概念&#xff0c;下面我将用分点的方式清晰解释镜像源的定义、作用以及特点&#xff1a; 1. 定义 镜像源&#xff08;Mirror&#xff09;&#xff1a;是一个服务器&#xff0c;它存储了另一个服务器上的某些或全部内容的副本。这些内容可以包…

Sony前端连接功放:深度解析与实用指南

Sony前端连接功放&#xff1a;深度解析与实用指南 在音响设备连接中&#xff0c;Sony前端与功放的连接常常是一个令人困惑却又至关重要的环节。本文将从四个方面、五个方面、六个方面和七个方面详细解析Sony前端连接功放的步骤、技巧及注意事项&#xff0c;旨在帮助读者轻松完…

计算机网络 —— 网络层(IP数据报)

计算机网络 —— 网络层&#xff08;IP数据报&#xff09; 网络层要满足的功能IP数据报IP数据报格式IP数据报首部格式数据部分 IP数据报分片 我们今天进入网络层的学习。 网络层要满足的功能 网络层作为OSI模型中的第三层&#xff0c;是计算机网络体系结构的关键组成部分&…

实验六、IPv4 地址的子网划分,第 2 部分《计算机网络》

你有没有发现&#xff0c;困的时候真的清醒不了。 目录 一、实验目的 二、实验内容 三、实验小结 一、实验目的 完成本练习之后&#xff0c;您应该能够确定给定 IP 地址和子网掩码的子网信息。 知道 IP 地址、网络掩码和子网掩码后&#xff0c;您应该能够确定有关该 IP 地…

SpringBoot实现参数校验拦截(采用AOP方式)

一、AOP是什么&#xff1f; 目的&#xff1a;分离横切关注点&#xff08;如日志记录、事务管理&#xff09;与核心业务逻辑。 优势&#xff1a;提高代码的可读性和可维护性。 关键概念 切面&#xff08;Aspect&#xff09;&#xff1a;包含横切关注点代码的模块。通知&#xff…

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 运输时间(200分) - 三语言AC题解(Python/Java/Cpp)

🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 📎在线评测链接 运输时间(200分) 🌍 评测功能需要订阅专栏后私信联系清隆解…

【面试干货】索引的优缺点

【面试干货】索引的优缺点 1、创建索引可以大大提高系统的性能&#xff08;**优点**&#xff09;2、增加索引也有许多不利的方面&#xff08;**缺点**&#xff09; &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 1、创建索引可以大大提高系…