下面是我在点击特定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”
)后验证多个值),这是动态的。不希望使用硬编码值。并匹配响应[3]。sId==“0003”
,因为这将在下次更改。
对此我有两个问题:
sId==“0003”
的数组索引,以便使用此索引进行验证?下面的代码不起作用。
def ind = Java.type('karate.Utility.FindIndex')
response.['#ind'].sId == '0003'
空手道使用json路径,该路径允许写入条件从json读取数据。
例如:
* def sId = "0003"
* def sValue = karate.jsonPath(response, "$[?(@.sId == '" + sId + "')]")
* match sValue[0] == {"sId" : "0003","sName" : "abc3","sPlace" : "abc13"}
现在,如果响应JSON数组上的sId中存在匹配项,则将返回所有此类匹配项。
无需执行*匹配值[0]。sId==“0003”,因为这是您的筛选条件
关于JSON路径的更多信息
联机JSON路径计算器
空手道文件参考
我一直在验证下面的回答。 当我使用空手道发出获取请求时,我会得到以下响应,我想验证它。 我试过: 它说它不是字符串。你能帮我确认一下这个请求吗?
任何人都可以在空手道API中如何部分下面的响应 这里我想从响应中提取partNumber和productTitle,其中响应中的初始数字是动态的,对于每个get方法,数字都会发生变化。 {"项目":{'41651625424':{itemCore:{部件号:'1234567',产品名称:'空手道API测试'}}}}
如何从空手道API中的json响应中检索数值? 在这里我想检索41651625424这个值在一个变量因为我必须通过这作为输入在另一个请求体
我用空手道0.9。5.我正在测试一个返回125MB json响应的endpoint(我知道,不应该在json上这样做——但我现在还停留在这里)。我怎样才能禁止空手道解析响应json,而只是将其视为纯文本?响应需要几毫秒才能完成,但空手道只是挂起尝试解析响应。我不需要验证响应,只需检查200 OK。 谢谢
我正在使用空手道验证GET请求的整个json响应。 下面是来自请求的json响应示例(我只为items显示了两个元素) 以下是我试图验证的方式: 但是,我得到了一个断言错误:
我试图验证非json格式的错误响应体。我尝试了使用模式以及使用包含匹配的关键字。这对我不起作用。 在post调用中观察到多个匹配时从API返回的实际响应: 我的空手道特点: 尝试*匹配实际的[0] == '#(^partSchema)'也从https://gist.github.com/ptrthomas/2a1e30bcb4d782279019b3d5c10b3ed1。不工作