前后台分离开发时遇到循环引用问题"$ref"
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处理的,但是通过这句话都能进行替换,把我们需要的数据还原回来
前后台分离开发时遇到循环引用问题"$ref"的更多相关文章
- 前后台分离开发--文件上传与下载,cookie,session
一.前后台分离开发的概念 ''' 1. 前台页面运行在前台服务器上,负责页面的渲染(静态文件的加载)与转跳 2. 后台代码运行在后台服务器上,负责数据的处理(提供数据请求的接口) ''' #如果没有前 ...
- 此类目的是防治序列化Json字符串时的循环引用问题-------最好解决方案
http://james.newtonking.com/json/help/index.html using Newtonsoft.Json;using System;using System.Col ...
- vue+webpack项目中使用dev-server搭建虚拟服务器,请求json文件数据,实现前后台分离开发
在项目开发中,前后台分离,做了假数据,项目使用vue2.0重构,后台也推到重来了,为了不耽误开发进程,我做了虚拟的数据请求,使用vue-cli脚手架搭建的项目文件中dev-server搭建虚拟api请 ...
- 前后台分离部署时,Niginx上的部署
upstream bowenpay_backend { server 127.0.0.1:9002; } server { listen 80; server_name wx.bowenpay.com ...
- EF 序列化实体为Json时的循环引用问题(不用自己写实体,不用匿名类型,不用EF的上下文属性)
自己写实体可以完美解决这个问题.(支持时间格式自定义) 用匿名类型也可以. 设置上下文方法如下: (jz为数据库上下文对象) jz.Configuration.ProxyCreationEnabled ...
- springboot 前后端分离开发解决跨域访问
最近新学习了Java EE开发框架springboot,我在使用springboot前后台分离开发的过程中遇到了跨域求问题.在网上寻找答案的过程中发现网上的解决方案大多比较零散,我在这里整理一个解决方 ...
- 0c-41-ARC下循环引用问题
1.ARC下循环引入问题 一个人拥有一只狗,一只狗拥有一个主人. 当增加d.owner = p;时形成循环引用. 解决方法:一端用strong,一端用weak. 2.ARC下@property参数 A ...
- 前后台分离式开发(swagger)
一.前后台分离开发(swagger) 1.安装maven 配置的maven环境变量 M2_HOME/MAVEN_HOME Path %M2_HOME%/bin 打开运行窗口:输入mvn -v,查看是否 ...
- Python循环引用的解决方案
1.延迟导入:即将 from xxx import yyy 放到函数或类的内部,从而使其作用域变成局部的,但是这样可能会对性能有些影响: 2.将 from xxx import yyy 转换成 imp ...
随机推荐
- dataTable转换成Json格式
#region dataTable转换成Json格式 /// <summary> /// /// </summary> /// <param name="dt& ...
- leetcode数据库题目及答案汇总
1. 第二高的薪水 select ifnull((select distinct Salary from Employee order by Salary desc limit 1,1),null) ...
- Ceph 集群整体迁移方案(转)
场景介绍:在我们的IDC中,存在着运行了3-6年的Ceph集群的服务器,这些服务器性能和容量等都已经无法满足当前业务的需求,在购入一批高性能机器后,希望将旧机器上的集群整体迁移到新机器上,当然,是保证 ...
- AHA高级心血管生命支持ACLS课前自我评估测试
AHA高级心血管生命支持ACLS课前自我评估测试 答题人:a 成绩单 您的得分:17.5 分 答对题数:7 题 您的名次:47 名 问卷满分:100 分 测试题数:40 题 参与人次:47 人 ...
- week05 codelab01 Babel ES6 webpack Nodejsserver等
Babel 他出现的原因就是很多浏览器还未完全兼容ES6 需要将你写的ES6的内容转换成ES5让浏览器兼容运行 ES5和ES6相比出现很多新内容 比如拼接字符串 ES6可以` ` 里面如果引用变量就用 ...
- Adobe Flash player ActiveX下载地址
http://www.adobe.com/support/flashplayer/downloads.html http://download.macromedia.com/pub/flashplay ...
- Java属性中指定Json的属性名称
只需要使用注解"@JsonProperty(value = "pwd")" import com.fasterxml.jackson.annotation.Js ...
- async:false;渲染阻塞
当我想让一个节点show()完以后再ajax获取数据进行操作: $("#outerdiv2").show(); $.ajax({}): 如果此时ajax里设置了async:fals ...
- Java框架spring Boot学习笔记(四):Spring Boot操作MySQL数据库
在pom.xml添加一下代码,添加操作MySQL的依赖jar包. <dependency> <groupId>org.springframework.boot</grou ...
- LR实现问答系统查询功能
脚本中未对问题进行参数化处理,关键点在于关联取值和web_add_header()函数的使用 Action() { web_url("首页", "URL=http://q ...