在空手道框架上访问具有随机或未知名称的嵌套JSON对象

时间:2018-10-25 09:21:17

标签: arrays json validation karate

我有这条JSON响应

"A": {
"RandomName01": {
    "B": "BOS",
    "C": {
        "RandomName02": {
            "D": "32",
            "E": "ABC",
            "F": "DEF"
        }
    },
    "G": "GHI"
}

我需要从中提取D的值,途中有两个RandomName标签。 我在文档中找不到与处理未知名称有关的任何内容。我尝试使用[],*,[0],..等,但失败了。

例如:

  • def值= response.A..C..D
  • def值=响应[0] .C [0] .D

等...

谢谢

2 个答案:

答案 0 :(得分:2)

感谢您的帮助。您的回答让我尝试了空手道中的jsonPath

这是个把戏:

* def value = karate.jsonPath(response, "$..D")

尝试使用我使用的jsonPath: http://jsonpath.com/

对于我使用的jsonPath表达式: https://goessner.net/articles/JsonPath/index.html#e2

谢谢:)

答案 1 :(得分:1)

这应该有效,

* def value = response..["D"]

您可以使用..运算符对任何键进行深度扫描

空手道使用jsonpath进行JSON操作。

有关更多有用的信息,请参阅Json path operators