FastJsonRedisSerializer.java 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. package com.genersoft.iot.vmp.utils.redis;
  2. import com.alibaba.fastjson2.JSON;
  3. import com.alibaba.fastjson2.JSONReader;
  4. import com.alibaba.fastjson2.JSONWriter;
  5. import org.springframework.data.redis.serializer.RedisSerializer;
  6. import org.springframework.data.redis.serializer.SerializationException;
  7. import java.nio.charset.Charset;
  8. /**
  9. * @description:使用fastjson实现redis的序列化
  10. * @author: swwheihei
  11. * @date: 2020年5月6日 下午8:40:11
  12. */
  13. public class FastJsonRedisSerializer<T> implements RedisSerializer<T> {
  14. public static final Charset DEFAULT_CHARSET = Charset.forName("UTF-8");
  15. private Class<T> clazz;
  16. public FastJsonRedisSerializer(Class<T> clazz) {
  17. super();
  18. this.clazz = clazz;
  19. }
  20. @Override
  21. public byte[] serialize(T t) throws SerializationException {
  22. if (t == null) {
  23. return new byte[0];
  24. }
  25. return JSON.toJSONString(t, JSONWriter.Feature.WriteClassName, JSONWriter.Feature.WritePairAsJavaBean).getBytes(DEFAULT_CHARSET);
  26. }
  27. @Override
  28. public T deserialize(byte[] bytes) throws SerializationException {
  29. if (bytes == null || bytes.length <= 0) {
  30. return null;
  31. }
  32. String str = new String(bytes, DEFAULT_CHARSET);
  33. return JSON.parseObject(str, clazz, JSONReader.Feature.SupportAutoType);
  34. }
  35. }