我可以在同一个 json 文件中引用另一个对象中的一个 json 对象吗?

use*_*236 7 json

我正在尝试开发一个使用 json 来描述数据的测试自动化框架。我有一个 json 文件,如下所示:

{
  "preparation":{
    "configuration":[
      {
        "config1":{
          "src_configfile":"/home/xxx/etc/src_config1.cfg",
          "dest_configfile":"/home/xxx/etc/abc.cfg"
        }
      },
      {
        "config2":{
          "src_configfile":"/home/xxx/etc/src_config2.cfg",
          "dest_configfile":"/home/xxx/etc/xyz.cfg"
        }
      }
    ],
    "executable_info1":[
      {
        "login_info":{
          "hostname":"abc.dw",
          "username":"xyz",
          "password":"*******"
        }
      },
      {
        "command":{
          "folderpath":"/home/xxx/yyy/bin",
          "processname":"sys.exe",
          "parameters":"-d"
        }
      }
    ],
  },
  "execution":[
    {
      "test_case1":{
        "folderpath":"/home/xxx/testscripts",
        "scriptname":"test_case1.py",
       ***???????????Can I access the config1 object here???????????? 
       "config_file"="preparation.configuration[0].config1.dest_configfile"***
      }
    },
    {
      "test_case1":{
        "folderpath":"/home/xxx/testscripts",
        "scriptname":"test_case2.py",
        ***"config_file"="preparation.configuration[1].config2.dest_configfile"***
      }
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

我需要对不同的测试用例使用不同的配置文件。我可以在执行中引用准备对象的config1对象吗???

Aln*_*tak 8

不,你不能这样做,至少不能直接这样做。首先,JSON 不支持循环引用。

您可能会考虑使用 jsonpath 等库,它允许您按模式引用元素,但您往往需要先验判断某个值是实际值还是对其他分支的引用。