以下是我点击特定Web服务时收到的JSON响应:
[
{
"sId" : "0001",
"sName" : "abc1",
"sPlace" : "abc11"
}, {
"sId" : "0002",
"sName" : "abc2",
"sPlace" : "abc12"
}, {
"sId" : "0003",
"sName" : "abc3",
"sPlace" : "abc13"
}, {
"sId" : "0004",
"sName" : "abc4",
"sPlace" : "abc14"
}
]
我不知道哪个索引具有我的期望值(确定哪个索引具有sId == '0003'
之后,我需要验证多个值),这是动态的。不想使用硬编码值。
并匹配response.[3].sId == '0003'
因为这将在下次更改。
对此我有两个问题:
sId == '0003'
的数组索引,以便可以使用该索引进行验证?下面的代码不起作用。
def ind = Java.type('karate.Utility.FindIndex')
response.['#ind'].sId == '0003'
答案 0 :(得分:2)
karate使用json-path,它允许写入条件以从JSON读取数据。
示例:
* def sId = "0003"
* def sValue = karate.jsonPath(response, "$[?(@.sId == '" + sId + "')]")
* match sValue[0] == {"sId" : "0003","sName" : "abc3","sPlace" : "abc13"}
现在,如果响应JSON数组上的sId中存在匹配项,则将返回所有此类匹配项。
不需要*匹配sValue [0] .sId ==“ 0003”,因为这是您的过滤器 条件