您现在的位置是:首页 > 文章详情

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

日期:2018-05-02点击:322

现在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(); 

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

原文链接:https://yq.aliyun.com/articles/665460
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章