解决$ref引用问题,以及绑定ManyToMany关系后引发的栈溢出错误

小程序突然在前台拿数据的时候发现出现了$ref引入问题,导致数据为空

当数据字段单独存在没做双向绑定的时候我们可以直接通过在return 的toJSONString()中加入SerializerFeature.DisableCircularReferenceDetect方法就可以解决,如图:

但是当字段之间存在ManyToMany多对多双向数据绑定的关系时则会出现“栈溢出”的错误,情况如下图

这个时候我们需要用new对象的方式把数据存入new出的对象当中,具体操作如下

JSONObject jSONObject= new JSONObject();
List<User> users=new ArrayList<User>();
for(User user:userService.getUsers()) {//这里返回的是一个List<User>集合
  User saveUser = new User();
  saveUser.setUsername(user.getUsername());
  saveUser.setPhone(user.getPhone());
  saveUser.setEmail(user.getEmail());
  //因为这里从数据库拿到的是一个Set集合所以重新new了一个set集合
  Set<Dept> setDepts=new HashSet<Dept>() ;
  //这个方法是自己写的sql通过多表联查条件userId拿到的部门数据
  setDepts.add(deptService.getDeptnameByuserid(user.getId()));
  saveUser.setDept(setDepts);
  users.add(saveUser);
		}
jSONObject.put("users",users);
return obj.toJSONString(jSONObject,SerializerFeature.DisableCircularReferenceDetect);

这样我们就解决了$ref的引用问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小狐狸崽子OvO

你的鼓励将是我创造最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值