| 123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- package com.genersoft.iot.vmp.utils.redis;
- import com.alibaba.fastjson2.JSON;
- import com.alibaba.fastjson2.JSONReader;
- import com.alibaba.fastjson2.JSONWriter;
- import org.springframework.data.redis.serializer.RedisSerializer;
- import org.springframework.data.redis.serializer.SerializationException;
- import java.nio.charset.Charset;
- /**
- * @description:使用fastjson实现redis的序列化
- * @author: swwheihei
- * @date: 2020年5月6日 下午8:40:11
- */
- public class FastJsonRedisSerializer<T> implements RedisSerializer<T> {
- public static final Charset DEFAULT_CHARSET = Charset.forName("UTF-8");
-
- private Class<T> clazz;
-
- public FastJsonRedisSerializer(Class<T> clazz) {
- super();
- this.clazz = clazz;
- }
-
- @Override
- public byte[] serialize(T t) throws SerializationException {
- if (t == null) {
- return new byte[0];
- }
- return JSON.toJSONString(t, JSONWriter.Feature.WriteClassName, JSONWriter.Feature.WritePairAsJavaBean).getBytes(DEFAULT_CHARSET);
- }
-
- @Override
- public T deserialize(byte[] bytes) throws SerializationException {
- if (bytes == null || bytes.length <= 0) {
- return null;
- }
- String str = new String(bytes, DEFAULT_CHARSET);
- return JSON.parseObject(str, clazz, JSONReader.Feature.SupportAutoType);
- }
- }
|