FastJson autoType is not support
文章树列

fastjson是阿里巴巴的开源JSON解析库,它可以解析JSON格式的字符串,支持将Java Bean序列化为JSON字符串,也可以从JSON字符串反序列化到JavaBean。

 

使用:

添加maven依赖

<dependency>

    <groupId>com.alibaba</groupId>

    <artifactId>fastjson</artifactId>

    <version>1.2.54</version>

</dependency>

API使用

 

String text = JSON.toJSONString(obj); //序列化

VO vo = JSON.parseObject("{...}", VO.class); //反序列化

但有时候会出现

使用Redis 配置替换fastjson 反序列化报错 com.alibaba.fastjson.JSONException: autoType is not support

解决方法是

在RedisSerializer<T>的实现类中添加白名单

//添加白名单

static {

    ParserConfig.getGlobalInstance().addAccept("com.glz.oauthmanager");

}

 

具体代码:

public class FastJsonRedisSerializer<T> implements RedisSerializer<T> {

    public static final Charset DEFAULT_CHARSET = Charset.forName("UTF-8");

    private Class<T> clazz;

    //添加白名单

    static {

        ParserConfig.getGlobalInstance().addAccept("com.glz.oauthmanager");

    }

    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, SerializerFeature.WriteClassName).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 (T) JSON.parseObject(str, clazz);

    }

}

新版下载
本文原创,商业转载请联系作者获得授权,非商业转载请注明出处。

评论

发送评论 编辑评论


                        

数据存储分类热门文章

标签热门文章排行

☛免责声明 ☛本站使用教程
Theme Argon With Ry-Plus By 清欢
我的第21918位朋友,历经127599次回眸才与你相遇
内容失效/资源代找/交流学习
内容失效/资源代找/交流学习