package com.alibaba.fastjson.support.spring; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.support.config.FastJsonConfig; import org.springframework.data.redis.serializer.RedisSerializer; import org.springframework.data.redis.serializer.SerializationException; /** * {@link RedisSerializer} FastJson Impl * @author lihengming * @since 1.2.36 */ public class FastJsonRedisSerializer<T> implements RedisSerializer<T> { private FastJsonConfig fastJsonConfig = new FastJsonConfig(); private Class<T> type; public FastJsonRedisSerializer(Class<T> type) { this.type = type; } public FastJsonConfig getFastJsonConfig() { return fastJsonConfig; } public void setFastJsonConfig(FastJsonConfig fastJsonConfig) { this.fastJsonConfig = fastJsonConfig; } @Override public byte[] serialize(T t) throws SerializationException { if (t == null) { return new byte[0]; } try { return JSON.toJSONBytes(t, fastJsonConfig.getSerializeConfig(), fastJsonConfig.getSerializerFeatures()); } catch (Exception ex) { throw new SerializationException("Could not serialize: " + ex.getMessage(), ex); } } @Override public T deserialize(byte[] bytes) throws SerializationException { if (bytes == null || bytes.length == 0) { return null; } try { return (T) JSON.parseObject(bytes, type, fastJsonConfig.getFeatures()); } catch (Exception ex) { throw new SerializationException("Could not deserialize: " + ex.getMessage(), ex); } } }