码迷,mamicode.com
首页 > 其他好文 > 详细

前后台分离开发时遇到循环引用问题"$ref"

时间:2019-01-03 19:27:55      阅读:220      评论:0      收藏:0      [点我收藏+]

标签:rtt   getch   free   方式   ase   问题   字符   orm   required   

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"

标签:rtt   getch   free   方式   ase   问题   字符   orm   required   

原文地址:https://www.cnblogs.com/yuhuashang-edward/p/10215999.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!