工具类:FastJsonRedisSerializer
- 依赖
- yml文件
- FastJsonRedisSerializer.java
依赖
<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:ss
time-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;
public class FastJsonRedisSerializer<T> implements RedisSerializer<T> {
public static final Charset DEFAULT_CHARSET = StandardCharsets.UTF_8;
private final Class<T> clazz;
static {
ParserConfig.getGlobalInstance().setAutoTypeSupport(true);
}
public FastJsonRedisSerializer(Class<T> clazz) {
this.clazz = clazz;
}
@Override
public byte[] serialize(T t) throws SerializationException {
if (t == null) {
return new byte[0];
}
try {
return JSON.toJSONString(t, SerializerFeature.WriteClassName)
.getBytes(DEFAULT_CHARSET);
} catch (Exception e) {
throw new SerializationException("序列化对象失败: " + t, e);
}
}
@Override
public T deserialize(byte[] bytes) throws SerializationException {
if (bytes == null || bytes.length == 0) {
return null;
}
try {
String json = new String(bytes, DEFAULT_CHARSET);
return JSON.parseObject(json, clazz);
} catch (Exception e) {
throw new SerializationException("反序列化字节数组失败: " + bytes, e);
}
}
}