当前位置: 首页 > news >正文

【工具类:FastJsonRedisSerializer】

工具类:FastJsonRedisSerializer

  • 依赖
  • yml文件
  • FastJsonRedisSerializer.java

依赖

   <!--     主要用于处理 JSON 数据的序列化和反序列化--><!--     序列化:将对象转换为一种可以存储或传输的格式(如 JSON、XML、二进制等)。这样可以将对象的状态保存到文件中,或通过网络发送到其他系统。--><!--     反序列化:将序列化后的数据重新转换为对象的过程。这使得程序能够读取存储的数据并将其恢复为原来的对象形式。--><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>2.0.53</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency>

yml文件

  jackson:date-format: yyyy-MM-dd HH:mm:sstime-zone: GMT+8

FastJsonRedisSerializer.java

package com.nnutc.common.utils;import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.parser.ParserConfig;
import com.alibaba.fastjson.serializer.SerializerFeature;
import org.springframework.data.redis.serializer.RedisSerializer;
import org.springframework.data.redis.serializer.SerializationException;import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;/*** FastJsonRedisSerializer 是一个使用 FastJSON 库进行对象序列化和反序列化的 RedisSerializer 实现类。** @param <T> 被序列化和反序列化的对象类型*/
public class FastJsonRedisSerializer<T> implements RedisSerializer<T> {public static final Charset DEFAULT_CHARSET = StandardCharsets.UTF_8;private final Class<T> clazz; // 被序列化对象的类类型static {// 启用 FastJSON 的自动类型支持ParserConfig.getGlobalInstance().setAutoTypeSupport(true);}/*** 构造函数,接受一个 Class<T> 类型的参数** @param clazz 被序列化对象的类类型*/public FastJsonRedisSerializer(Class<T> clazz) {this.clazz = clazz;}/*** 序列化方法,将对象转换为字节数组** @param t 被序列化的对象* @return 序列化后的字节数组* @throws SerializationException 如果序列化失败*/@Overridepublic byte[] serialize(T t) throws SerializationException {if (t == null) {return new byte[0]; // 如果对象为 null,返回空字节数组}try {return JSON.toJSONString(t, SerializerFeature.WriteClassName).getBytes(DEFAULT_CHARSET);} catch (Exception e) {throw new SerializationException("序列化对象失败: " + t, e);}}/*** 反序列化方法,将字节数组转换为对象** @param bytes 要反序列化的字节数组* @return 反序列化得到的对象* @throws SerializationException 如果反序列化失败*/@Overridepublic T deserialize(byte[] bytes) throws SerializationException {if (bytes == null || bytes.length == 0) {return null; // 如果字节数组为 null 或空,返回 null}try {String json = new String(bytes, DEFAULT_CHARSET); // 将字节数组转换为 JSON 字符串return JSON.parseObject(json, clazz); // 使用 FastJSON 将 JSON 字符串解析为指定类型的对象} catch (Exception e) {throw new SerializationException("反序列化字节数组失败: " + bytes, e);}}
}
http://www.lryc.cn/news/449063.html

相关文章:

  • Spring Cloud Alibaba-(6)Spring Cloud Gateway【网关】
  • 芯科科技2024年Works With开发者大会登陆上海,物联网和人工智能的变革性融合带来无限精彩
  • 华为OD机试 - 匿名信(Python/JS/C/C++ 2024 E卷 100分)
  • Python习题 208:将二维列表数组转置
  • STM32F407HAL库输出互补PWM波以及死区时间计算
  • matlab-对比两张图片的RGB分量的差值并形成直方图
  • SpringBoot集成Matlab软件实战
  • Java---异常及处理
  • 【开源免费】基于SpringBoot+Vue.JS网上购物商城(JAVA毕业设计)
  • 添加vscode插件C/C++ snippets,快速生成LVGL .c/.h文件模版
  • ee trade:如何辨别足金真假
  • GCC使用入门
  • CSS3 字体
  • LeetCode题练习与总结:为运算表达式设计优先级--241
  • 金融科技革命:API接口开放平台,畅通金融服务之路
  • Java8后新特性介绍
  • Arthas monitor(方法执行监控)
  • 语言的副作用
  • centos磁盘逻辑卷LVM创建
  • BUUCTF蜘蛛侠呀
  • 大数据新视界 --大数据大厂之基于 MapReduce 的大数据并行计算实践
  • win自带录屏怎么用?让视频制作更简单!
  • 修改Kali Linux的镜像网站
  • Docker精讲:基本安装,简单命令及核心概念
  • 利用git将项目上传到github
  • 828华为云征文 | 华为云X实例CPU性能测试详解与优化策略
  • ass字幕文件怎么导入视频mp4?ass字幕怎么编辑?视频加字幕超简单!
  • camunda + oracle 启动报错 解决方法
  • 变幅液压系统比例阀放大器
  • 在 Ubuntu 安装 Python3.7(没有弯路)