当前位置: 首页 > 知识库问答 >
问题:

空手道-JSON响应解析

史懿轩
2023-03-14

下面是我在点击特定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”,因为这将在下次更改。

对此我有两个问题:

  1. 如何将响应传递给java代码并获取具有sId==“0003”的数组索引,以便使用此索引进行验证?

下面的代码不起作用。

def ind = Java.type('karate.Utility.FindIndex') 
response.['#ind'].sId == '0003'

共有1个答案

孔逸春
2023-03-14

空手道使用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。不工作