現(xiàn)在JAVA 對象如下:
@Data
@NoArgsConstructor
public class ResourceTreeDto implements Serializable, Comparable<ResourceTreeDto> {
private Collection<ResourceTreeDto> children = new TreeSet<>();
}
該對象需要存進redis里面梧油,序列化進去郑诺,沒發(fā)現(xiàn)問題夹姥,但反序列化時,報如下錯
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]
經(jīng)查辙诞,原來是fastjson不支持泛型辙售,修改原有的對象即可:
@Data
@NoArgsConstructor
public class ResourceTreeDto implements Serializable, Comparable<ResourceTreeDto> {
private static final long serialVersionUID =
/**
* 子節(jié)點列表,去掉泛形倘要。
*/
private Collection children = new TreeSet();
去掉泛形后序列化一起正常圾亏。