Obj to String 修复List<Integer> 内容重复循环“$ref“情况

文章讲述了在Java中,如果对象属性为List且存在循环引用,JSONObject.toJSONString会导致`$ref`字段的出现。解决方法包括避免循环引用,使用Gson或Jackson库处理,并举例了禁用循环引用的Gson配置。
摘要由CSDN通过智能技术生成

在java中;若某个对象属性为 List 的形式,
private List exRsnLst;
且在交互的过程中 需要 转为jsonString的方式 ,会出现" r e f " 的情况,如下图, ! [ 在这里插入图片描述 ] ( h t t p s : / / i m g − b l o g . c s d n i m g . c n / 372 e 8032 e e b e 486 c 977832527 e 83 c c 94. p n g ) 经过排查发现:在使用 J S O N O b j e c t . t o J S O N S t r i n g ( O b j e c t ) 方法时,如果对象中存在循环引用,或者对象包含 L i s t 属性,并且 L i s t 中的元素互相引用,就会出现 " ref"的情况,如下图, ![在这里插入图片描述](https://img-blog.csdnimg.cn/372e8032eebe486c977832527e83cc94.png) 经过排查发现: 在使用JSONObject.toJSONString(Object)方法时,如果对象中存在循环引用,或者对象包含List属性,并且List中的元素互相引用,就会出现" ref"的情况,如下图,![在这里插入图片描述](https://imgblog.csdnimg.cn/372e8032eebe486c977832527e83cc94.png)经过排查发现:在使用JSONObject.toJSONString(Object)方法时,如果对象中存在循环引用,或者对象包含List属性,并且List中的元素互相引用,就会出现"ref"字段。

" r e f " 是 J S O N 字符串中用于表示循环引用的特殊字段。当一个对象被序列化为 J S O N 字符串时,如果存在循环引用,为了避免 J S O N 字符串变得无穷无尽,系统会使用 " ref"是JSON字符串中用于表示循环引用的特殊字段。当一个对象被序列化为JSON字符串时,如果存在循环引用,为了避免 JSON 字符串变得无穷无尽,系统会使用" ref"JSON字符串中用于表示循环引用的特殊字段。当一个对象被序列化为JSON字符串时,如果存在循环引用,为了避免JSON字符串变得无穷无尽,系统会使用"ref"来表示循环引用关系。

如果你不希望出现"$ref"字段,可以考虑进行以下操作:

在定义对象时,避免出现循环引用的情况。确保对象之间的引用关系是有限合理的,而不是形成死循环。
在序列化时,可以尝试使用更高级的库,如Gson或Jackson,这些库对于处理循环引用有更好的支持和控制。
例如,使用Gson库来进行序列化,可以通过配置Gson实例的setExclusionStrategies()方法来避免出现"$ref"字段。以下是一个示例代码:

// 创建Gson实例,并禁用循环引用处理
Gson gson = new GsonBuilder().disableInnerClassSerialization().create();
// 序列化对象
String jsonString = gson.toJson(obj);
经过以上方式就得以解决;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值