Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当存在嵌套JSON';答案是什么_Json_Karate - Fatal编程技术网

当存在嵌套JSON';答案是什么

当存在嵌套JSON';答案是什么,json,karate,Json,Karate,从一个响应中,我提取了这样一个子集 { "base": { "first": { "code": "1", "description": "Its First" }, "second": { "code": "2", "description": "Its Second" }, "default": { "last": { "code": "last", "de

从一个响应中,我提取了这样一个子集

{
  "base": {
    "first": {
      "code": "1",
      "description": "Its First"
    },
    "second": {
      "code": "2",
      "description": "Its Second"
    },
    "default": {
      "last": {
        "code": "last",
        "description": "No"
      }
    }
  }
}
如果我需要使用和match X contains进行单个验证来检查

  • 在第一个内部,代码是1
  • 在默认的last中,代码是last

  • 我不是在每次验证中都使用json路径,而是尝试提取一个特定部分并对其进行验证。如果没有嵌套的json路径,我可以使用和match X contains轻松完成,但是当存在嵌套的json时,我无法完成。

    这是否适用于您:

    * def first = get[0] response..first
    * match first.code == '1'
    * def last = get[0] response..default.last
    * match last.code == 'last'
    
    编辑:ok看起来您希望尽可能地压缩成一行,更重要的是能够在嵌套节点中执行
    包含的操作。就我个人而言,我觉得这有时不值得费心,但事情是这样的

    也可参考以下捷径:


    嗯,我想我的问题有点不同。 例如,如果我使用json路径直接指向第一个,并将其保存到变量savedResponse中,我可以执行此验证

    And match savedResponse contains {code: "1"}
    
    如果在first下有10个键值组合,并且如果我需要验证其中的6个键值组合,那么我可以使用相同的json路径,并且可以使用match contains轻松完成

    类似的方法是,如果我将上述响应保存到变量savedResponse中,我将如何使用match contains验证多个内容。下面的语句无论如何都不起作用

    And match savedResponse contains {first:{code:"1"}, last:{code:"last"}}
    

    但是,如果我修改了一些东西,它会工作吗

    编辑我的答案,我想这就是你要找的?
    And match savedResponse contains {first:{code:"1"}, last:{code:"last"}}