当前位置: 首页 > 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.mrgr.cn/news/38788.html

相关文章:

  • 免费送源码:Javaspringboot++MySQL springboot 社区互助服务管理系统小程序 计算机毕业设计原创定制
  • LeetCode //C - 389. Find the Difference
  • 新组合:节律微生态=单菌完成图+宏基因组
  • Maven(1)什么是Maven?
  • 人工打电话的操作步骤指南
  • 平衡操控使用场景分析和对低延迟的直播技术要求
  • 感知红利!单车ADAS摄像头提至9.45颗!市场激战再升级
  • 安全类面试题-填空题
  • Spring Boot 进阶-Spring Boot 如何实现自定义的过滤器详解
  • 人工智能与机器学习原理精解【29】
  • 生信初学者教程(十五):差异结果的热图
  • 聚势启新 智向未来 | 重庆华阳通用科技有限公司揭牌成立
  • PHP基础语法
  • Java SPI 原理、样例
  • 基于Python的人工智能应用案例系列(14):Fashion MNIST图像分类CNN
  • 八段锦之养生功效:AI语义学分析
  • 进程管理工具:非daemon进程管理工具supervisor
  • 物理加密机的高性能操作
  • AutoGen框架进行多智能体协作—AI Agentic Design Patterns with AutoGen(一)
  • 【Linux】修改用户名用户家目录