解決$ref引用問題,以及繫結ManyToMany關係後引發的棧溢位錯誤
阿新 • • 發佈:2022-05-05
小程式突然在前臺拿資料的時候發現出現了$ref引入問題,導致資料為空
![1651750703191](
)
當資料欄位單獨存在沒做雙向繫結的時候我們可以直接通過在return 的toJSONString()中加入SerializerFeature.DisableCircularReferenceDetect方法就可以解決,如圖:
![1651753323913](
)
但是當欄位之間存在ManyToMany多對多雙向資料繫結的關係時則會出現“棧溢位”的錯誤,情況如下圖
![1651753634104](
)
這個時候我們需要用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的引用問題
大佬點個訂閱再走唄~!