解决fastjson反序列化时报错的问题

简介: 现在JAVA 对象如下:@Data@NoArgsConstructorpublic class ResourceTreeDto implements Serializable, Comparable { private Coll...

现在JAVA 对象如下:

@Data
@NoArgsConstructor
public class ResourceTreeDto implements Serializable, Comparable<ResourceTreeDto> {

   
    private Collection<ResourceTreeDto> children = new TreeSet<>();
}

该对象需要存进redis里面,序列化进去,没发现问题,但反序列化时,报如下错


com.alibaba.fastjson.JSONException: syntax error, expect {, actual TreeSet, pos 1718, fieldName menuTree, fastjson-version 1.2.39
    at com.alibaba.fastjson.parser.deserializer.JavaBeanDeserializer.deserialze(JavaBeanDeserializer.java:451) ~[fastjson-1.2.39.jar:na]
    at com.alibaba.fastjson.parser.deserializer.JavaBeanDeserializer.parseRest(JavaBeanDeserializer.java:1234) ~[fastjson-1.2.39.jar:na]
    at com.alibaba.fastjson.parser.deserializer.FastjsonASMDeserializer_4_ResourceTreeDto.deserialze(Unknown Source) ~[na:na]
    at com.alibaba.fastjson.parser.deserializer.JavaBeanDeserializer.deserialze(JavaBeanDeserializer.java:267) ~[fastjson-1.2.39.jar:na]
    at com.alibaba.fastjson.parser.deserializer.DefaultFieldDeserializer.parseField(DefaultFieldDeserializer.java:80) ~[fastjson-1.2.39.jar:na]
    at com.alibaba.fastjson.parser.deserializer.JavaBeanDeserializer.parseField(JavaBeanDeserializer.java:1061) ~[fastjson-1.2.39.jar:na]
    at com.alibaba.fastjson.parser.deserializer.JavaBeanDeserializer.deserialze(JavaBeanDeserializer.java:756) ~[fastjson-1.2.39.jar:na]

经查,原来是fastjson不支持泛型,修改原有的对象即可:

@Data
@NoArgsConstructor
public class ResourceTreeDto implements Serializable, Comparable<ResourceTreeDto> {

    private static final long serialVersionUID =  
    /**
     * 子节点列表,去掉泛形。
     */
    private Collection  children = new TreeSet();

去掉泛形后序列化一起正常。

相关文章
|
JSON fastjson Java
Fastjson 序列化,反序列化Map对象排序问题(字符串转map,map转字符串)
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qingfeng812/article/details/61194594 ...
5174 0
|
存储 JSON fastjson
再也不用心惊胆战地使用FastJSON了——序列化篇
本篇将主要介绍json序列化的详细流程。本文阅读的FastJSON源码版本为2.0.31。
3828 49
|
JSON fastjson Java
niubility!即使JavaBean没有默认无参构造器,fastjson也可以反序列化。- - - - 阿里Fastjson反序列化源码分析
本文详细分析了 Fastjson 反序列化对象的源码(版本 fastjson-1.2.60),揭示了即使 JavaBean 沲有默认无参构造器,Fastjson 仍能正常反序列化的技术内幕。文章通过案例展示了 Fastjson 在不同构造器情况下的行为,并深入探讨了 `ParserConfig#getDeserializer` 方法的核心逻辑。此外,还介绍了 ASM 字节码技术的应用及其在反序列化过程中的角色。
316 10
|
存储 JSON fastjson
聊聊fastjson反序列化的那些坑
聊聊fastjson反序列化的那些坑
3484 0
聊聊fastjson反序列化的那些坑
|
JSON 前端开发 fastjson
fastjson全局序列化坑
fastjson全局序列化坑
234 0
|
前端开发 fastjson
mvc配置fastjson序列化枚举
mvc配置fastjson序列化枚举
217 0
|
缓存 NoSQL Java
最详细 | redis实战:JackSon/FastJson方式序列化深度解析
Jackson2JsonRedisSerializer和FastJsonRedisSerializer的实战应用
4776 0
|
fastjson Java
fastjson全局日期序列化设置导致JSONField无效
fastjson通过代码指定全局序列化返回时间格式,导致使用JSONField注解标注属性的特殊日期返回格式失效
414 0
|
JSON 缓存 安全
fastjson反序列化历史与检测
fastjson反序列化历史与检测
|
XML JSON 缓存
【WEB安全】Fastjson反序列化(上)
Java 序列化及反序列化处理在基于Java 架构的Web应用中具有尤为重要的作用。例如位于网络两端、彼此不共享内存信息的两个Web应用在进行远程通信时,无论相互间发送何种类型的数据,在网络中实际上都是以二进制序列的形式传输的。为此,发送方必须将要发送的Java 对象序列化为字节流,接收方则需要将字节流再反序列化还原得到Java 对象,才能实现正常通信。当攻击者输入精心构造的字节流被反序列化为恶意对象时,就会造成一系列的安全问题。
692 0
【WEB安全】Fastjson反序列化(上)