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"的更多相关文章

  1. 前后台分离开发--文件上传与下载,cookie,session

    一.前后台分离开发的概念 ''' 1. 前台页面运行在前台服务器上,负责页面的渲染(静态文件的加载)与转跳 2. 后台代码运行在后台服务器上,负责数据的处理(提供数据请求的接口) ''' #如果没有前 ...

  2. 此类目的是防治序列化Json字符串时的循环引用问题-------最好解决方案

    http://james.newtonking.com/json/help/index.html using Newtonsoft.Json;using System;using System.Col ...

  3. vue+webpack项目中使用dev-server搭建虚拟服务器,请求json文件数据,实现前后台分离开发

    在项目开发中,前后台分离,做了假数据,项目使用vue2.0重构,后台也推到重来了,为了不耽误开发进程,我做了虚拟的数据请求,使用vue-cli脚手架搭建的项目文件中dev-server搭建虚拟api请 ...

  4. 前后台分离部署时,Niginx上的部署

    upstream bowenpay_backend { server 127.0.0.1:9002; } server { listen 80; server_name wx.bowenpay.com ...

  5. EF 序列化实体为Json时的循环引用问题(不用自己写实体,不用匿名类型,不用EF的上下文属性)

    自己写实体可以完美解决这个问题.(支持时间格式自定义) 用匿名类型也可以. 设置上下文方法如下: (jz为数据库上下文对象) jz.Configuration.ProxyCreationEnabled ...

  6. springboot 前后端分离开发解决跨域访问

    最近新学习了Java EE开发框架springboot,我在使用springboot前后台分离开发的过程中遇到了跨域求问题.在网上寻找答案的过程中发现网上的解决方案大多比较零散,我在这里整理一个解决方 ...

  7. 0c-41-ARC下循环引用问题

    1.ARC下循环引入问题 一个人拥有一只狗,一只狗拥有一个主人. 当增加d.owner = p;时形成循环引用. 解决方法:一端用strong,一端用weak. 2.ARC下@property参数 A ...

  8. 前后台分离式开发(swagger)

    一.前后台分离开发(swagger) 1.安装maven 配置的maven环境变量 M2_HOME/MAVEN_HOME Path %M2_HOME%/bin 打开运行窗口:输入mvn -v,查看是否 ...

  9. Python循环引用的解决方案

    1.延迟导入:即将 from xxx import yyy 放到函数或类的内部,从而使其作用域变成局部的,但是这样可能会对性能有些影响: 2.将 from xxx import yyy 转换成 imp ...

随机推荐

  1. 算法之Python实现 - 000

    Python的火热已极,几乎人人在学Python,为了节约时间,也为了实现Python的代码量,计划从今天开始,将<算法与数据结构题目最优解>一书中的代码全部用Python实现.

  2. Redis物理文件结构

    Redis物理文件结构  对于数据库,个人习惯先从物理结构文件入手,整体上看一下有哪些文件,都是什么作用.类似于MySQL,数据文件和配置文件是Redis最基本也是做主要的两个物理文件之一,相比MyS ...

  3. celery (二) task

    Task task 具有如下特点: task 可以在任何可调用的地方创建.它有双重角色: 定义了当task被调用时,会发送一个消息. 定义了当worker收到消息时会运行消息对应的函数 每个task都 ...

  4. 兼容的获取样式的函数getStyle()

    想要得到某个元素的某个样式属性,可以用: <div id="div01" style="color:red">123</div> var ...

  5. error: undefined reference to 'android::hardware::details::return_status::~return_status()'

    use hidl , make fail. reason is:missing libs:libbinder

  6. python--第十六天总结(bootstrap)

    一. 实现原理 网格布局是通过容器的大小,平均分为12份(可以修改),再调整内外边距,和表格布局有点类似但是也存在区别. 实现步骤如下: (1) 数据行.row 必须包含在容器.container 中 ...

  7. python多线程的学习

    0x00.前言 学了一下python的多线程,threading模块 感觉挺有意思的,随便练手写了一个很粗陋的windows下多线程扫在线ip的脚本 脚本没什么技术含量,纯粹练手,扫一趟192的局域网 ...

  8. Uncaught TypeError: form.attr is not a function 解决办法

    前端form表单提交时遇到个问题,一直报错如下 首先说结论:form是个js对象,不是jQuery对象,不能用jquery对象的方法. 代码是: $(document).ready(function( ...

  9. Educational Codeforces Round 35 (Rated for Div. 2)

    Educational Codeforces Round 35 (Rated for Div. 2) https://codeforces.com/contest/911 A 模拟 #include& ...

  10. ping不通公网ip时路由器设置

    可能是路由器里设置了wan口禁ping了 另外,NAT地址转换不要动,默认是开启的 主服务器上防火墙关掉或者设置好访问规则 默认的80端口是不能用的,需要设置一个其它的端口