| 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); | 
|     } | 
|   | 
|   | 
| } |