小程序突然在前台拿数据的时候发现出现了$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的引用问题
本文介绍如何在小程序中处理数据绑定时的$ref问题,特别关注ManyToMany关系下的栈溢出错误。通过新对象存储并转换集合,避免循环引用,确保数据完整输出。
300

被折叠的 条评论
为什么被折叠?



