问题场景:
在开发测试平台的过程中,后端接口返回{"
r
e
f
"
:
ref":
ref":…[0]}的数据,导致页面展示数据不对
问题描述
跟前端对接的时候最近经常出现数据中包含{"
r
e
f
"
:
ref":
ref":…[0]}这类无法解析的问题
后端代码
@RequestMapping(value = "/qaUsers",method = RequestMethod.POST)
public BaseResponse<PageList<QaUserDto>> qaUsers(@Valid @RequestBody QaUserQueryFilter filter){
return BaseResponse.getInstance(userService.queryQaUser(filter));
}
原因分析:
使用FastJson的JSONArray类型作为返回数据,当像JSONArray对象中添加JSONObject对象,而JSONObject对象中包含相同的节点数据时,FastJson会防止返回数据栈溢出的问题,自动将JSONArray中相同的节点数据使用引用方式代替,即:{" r e f " : ref": ref":…[0]}
解决方案:
将后端代码返回数据包裹一层JSON.toJSON
@RequestMapping(value = "/qaUsers",method = RequestMethod.POST)
public BaseResponse<PageList<QaUserDto>> qaUsers(@Valid @RequestBody QaUserQueryFilter filter){
return BaseResponse.getInstance(JSON.toJSON(userService.queryQaUser(filter)));
}
记录踩坑记录,希望可以帮到你,喜欢的可以点个赞哦👍