前后台分离开发时遇到循环引用问题"$ref"
2024-10-19 06:20:36
1. 遇到的问题
{
"errMsg": "",
"data": {
"baseinfo": {
"freeTest": "0",
"request": "1",
"format": "2",
"url": "rttt"
},
"backSample": {
"backSample": ""
},
"errCode": [
{
"sid": "2",
"orderVal": "2",
"wrequired": "g",
"code": "mm",
"fieldId": "2",
"wdefault": "sdf",
"codeDesc": "erfrgt",
"inOut": "1",
"name": "efed",
"wdesc": "dfdws",
"typ": "int"
},
{
"sid": "1",
"orderVal": "2",
"wrequired": "g",
"code": "dd",
"fieldId": "2",
"wdefault": "sdf",
"codeDesc": "edfd",
"inOut": "1",
"name": "efed",
"wdesc": "dfdws",
"typ": "int"
}
],
"params": [
{
"$ref": "$.data.errCode[0]"
},
{
"sid": "2",
"orderVal": "1",
"wrequired": "d",
"code": "mm",
"fieldId": "1",
"wdefault": "eddf",
"codeDesc": "erfrgt",
"inOut": "1",
"name": "eed",
"wdesc": "dfds",
"typ": "int"
}
]
},
"code": "0"
}
今天在开发过程中,使用POSTMAN调试接口时出现以上问题
"$ref": "$.data.errCode[0]"
2. 解决方案
DisableCircularReferenceDetect来禁止循环引用检测: JSON.toJSONString(..., SerializerFeature.DisableCircularReferenceDetect)
采用的一个对象,整个list列表中每个元素有一个对象元素,如果第二个元素中有一个与第一个元素中对象同名的,就会去引用上一个元素的地址,在json前台解析的时候就不会解析出来相应对象的数据,当进行toJSONString的时候,默认如果重用对象的话,会使用引用的方式进行引用对象。
3. 剖析
引用是用“$ref”来表示的
引用 | 描述 |
"$ref":".." | 上一级 |
"$ref":"@" | 当前对象,也是自引用 |
"$ref":"$" | 根对象 |
"$ref":"$.children.0" | 基于路径的引用,相当于 root.getChildren().get(0) |
3. 前端解决方案
FastJson.format(data); //data是后台返回的json数据,里面有$ref字样的字符串,这是前面所说的fastjson处理的,但是通过这句话都能进行替换,把我们需要的数据还原回来
最新文章
- Android获取位置信息的方法总结
- Android学习笔记之消息机制
- 重构Web Api程序(Api Controller和Entity) 续篇(2)
- 网络流 HDU 3605
- Java for LeetCode 208 Implement Trie (Prefix Tree)
- react native TypeError network request failed
- nginx安全相关设置
- 二分多重匹配(HDU5093)
- Hbase之必要时取出请求的行(列族所有数据)
- Shell’s Sort
- Android 网络请求详解
- Jsp_demo:自定义标签
- HTML5 WebAudioAPI-实例(二)
- 04747_Java语言程序设计(一)_第3章_面向对象编程基础
- CodeForces Round #191 (327C) - Magic Five 等比数列求和的快速幂取模
- 从PRISM开始学WPF(五)MVVM(一)ViewModel?
- SqlServer数据库重命名报错误:5030
- Javascript高级编程学习笔记(56)—— DOM2和DOM3(8)低版本IE范围
- Shiro 基础教程
- codeforces 722D Generating Sets 【优先队列】