前后台分离开发时遇到循环引用问题"$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 ...
随机推荐
- 阿里云ossfs配置
Github:https://github.com/aliyun/ossfs/wiki Root账户卸载:umount /挂载目录非root用户要卸载目录,请用:fusermount -u your_ ...
- Python3 获取本机 IP
通过 UDP 获取本机 IP,没有任何的依赖,也没有去猜测机器上的网络设备信息,而且是利用 UDP 协议来实现的,生成一个UDP包,把自己的 IP 放如到 UDP 协议头中,然后从UDP包中获取本机的 ...
- IntelliJ IDEA mybatis-generator的使用
STEP 1. 在maven项目的pom.xml 添加mybatis-generator-maven-plugin 插件 pop.xml <dependency> <groupId& ...
- python day10 函数(第二篇)
2019.4.10 S21 day10笔记总结 一.内容回顾 1.面试题相关: 1.py2和py3的区别 2.运算符的计算 :3 or 9 and 8 3.字符串的反转 4.is和==的区别 5.v1 ...
- Servlet的三大作用域
Servlet的三大作用域 一.request 请求对象 共享的数据:请求共享 特点:同一次请求中,共享数据可以获取(请求一旦结束,请求共享清除站)(请求转发能共享参数,重定向不行) 代码:req. ...
- Game Engine Architecture 6
[Game Engine Architecture 6] 1.Data-Parallel Computations A GPU is a specialized coprocessor designe ...
- MySql中order by和union all同时使用
() UNION ALL () 两边的语句加上括号就可以了
- Ubuntu 批量添加用户
#!/bin/bash cat user.txt | while read linedo user=$(echo $line | cut -d ' ' -f1) passwd=$(echo ...
- A Boring Problem UVALive - 7676
16年北京现场赛的题,全场过的队30+. 初看只知道 O(N^2logK)的暴力,以为是什么变换. 仔细发现活用 二项式定理 就行. #include <bits/stdc++.h> us ...
- Ubuntu 16.04 安装OpenCV 3.4.3
cmake过程中可能遇到的问题:1.如果网络不好,出现ippicv_linux_20151201.tgz无法在终端下载的情况,则可以先单独下载 ippicv_linux_20151201.tgz之后, ...