FastJson 1.2.57 ~ 1.2.62版本 存在此问题
public class TreeNode<T extends TreeResource, R extends TreeNode> implements Serializable {
private T data;
private List<R> childNodes;
public List<R> getChildNodes() {
return childNodes;
}
public void setChildNodes(List<R> childNodes) {
this.childNodes = childNodes;
}
public T getData() {
return data;
}
public void setData(T data) {
this.data = data;
}
}
public class ChildTreeNodeDto extends TreeNode<GoodsClassifyDto, ChildTreeNodeDto> implements Serializable {
@Override
public GoodsClassifyDto getData() {
return super.getData();
}
@Override
public void setData(GoodsClassifyDto data) {
super.setData(data);
}
@Override
public List<GoodsClassifyTreeDto> getChildNodes() {
return super.getChildNodes();
}
@Override
public void setChildNodes(List<GoodsClassifyTreeDto> childNodes) {
super.setChildNodes(childNodes);
}
}
以上为反序列化的父类和子类。
扒了源码, 看到JavaBeanInfo是得到clazz.getMethods(); 进行处理,所以会存在两个一样的method,导致使用了父类的, 最终反序列化是吧。 这里应该对相同的名称的method进行一遍过滤吧,把父类的进行过滤掉, 才不会出现问题。
2条答案
按热度按时间k2arahey1#
你可以尝试提交一个fix的pr
uujelgoq2#
你好,你可以提供一个可重现你描述的bug的最小demo吗?我有点没太明白你反馈的bug @lockielyKIM