项目中JSON序列化循环引用的问题

已经很多次碰到循环引用的问题了

之前碰到是在Spring中初始化过程中component之间存在循环引用怎么办

 

这次碰到,是在JSON序列话的时候碰到了循环引用导致的问题

问题原因:

在结构体中,为了实现方便数据的引用,在数据结构中加入了Parent节点,由于存在child节点,在生成json对象的时候就会存在过程一直无法结束的问题

这个问题之前在JS中也碰到过,但是当时并没有记录下来,因为当时的问题很简单就解决了,就是直接把产生循环的成员对象屏蔽

这次不屏蔽parent 直接把parent删掉,还要把删除部分的代码改一下,不再依赖parent

 

wrapper

public static class CombinationMenuItemWrapper<T> {
    private FieldInfoHc.CombinationMenuItem<T> value;
    private FieldInfoHc.CombinationMenuItem<T> parent;
    private boolean isTop;
}

 在显示的时候使用这个包装类

删除

private final IOnListMenuClickListener<CombinationMenuItemWrapper<String>>
        mOnListMenuClickListener = (view, position, item) -> {
    if (view.getId() == R.id.btnDelete) {
        if (item.isTop()) {
            mFieldInfoHc.getCombinationMenuItems().remove(item.getValue());
        } else {
            item.getParent().getChilds().remove(item.getValue());
        }
        refreshRv();
    }
};

重中之重,构建需要序列话的结构体时,要小心循环引用的问题

posted on 2023-10-24 10:35  摆渡人19966  阅读(116)  评论(0编辑  收藏  举报

导航