zoukankan      html  css  js  c++  java
  • 前后台分离开发时遇到循环引用问题"$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处理的,但是通过这句话都能进行替换,把我们需要的数据还原回来

  • 相关阅读:
    替换掉一段 以 $ 开头 $ 结尾 的字符串
    react 中使用 codemirror2(在线代码编辑器)读取 yaml 文件
    第四篇:前端读取文件 | FileReader 对象及其属性
    umi 如何使用 Mock 模拟数据
    loading 动画 系列
    网站页面上标签页小图标的添加方式
    Linux tail命令
    Python实现字符串反转的方法
    Redis 配置远程访问
    消息队列
  • 原文地址:https://www.cnblogs.com/yuhuashang-edward/p/10215999.html
Copyright © 2011-2022 走看看