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

空手道中未命名的JSON数组字段验证

壤驷骁
2023-03-14

我在响应中有一个类似这样的未命名JSON数组,我想检查它是否包含“confirmationNumber”:“pqrs”。我可以知道我怎样在空手道中检查吗?

[
    {
        "id": 145,
        "confirmationNumber": "abcd"
    },{
        "id": 723
        "confirmationNumber": "pqrs"
    }
    ,{
        "id": 7342
        "confirmationNumber": "sfeq"
    }
]

共有1个答案

通典
2023-03-14

karate.filter()适用于以下情况:

* def response = 
"""
[
   {
      "id":145,
      "confirmationNumber":"abcd"
   },
   {
      "id":723,
      "confirmationNumber":"pqrs"
   },
   {
      "id":7342,
      "confirmationNumber":"sfeq"
   }
]
"""
* def fun = function(x){ return x.confirmationNumber == 'pqrs' }
* def found = karate.filter(response, fun)
* match found == '#[1]'

另请参见JsonPath的示例:https://github.com/intuit/karate#jsonpath-过滤器

编辑:抱歉,有一个更简单的方法,请阅读文档!

* match response contains { id: '#number', confirmationNumber: 'pqrs' }
* def item = { confirmationNumber: 'pqrs' }
* match response contains '#(^item)'
 类似资料:
  • 我试图验证下面的响应,这是一个没有数组名称的数组。 当我尝试使用下面的匹配时,每个脚本都会出错。 ' 错误:com.intuit.karate.exception.KarateExcture:期望在路径$中找到属性为['soldTo']的对象,但找到了'net.minidev.json.JSONArray'。com.intuit.karate.StepDefs.match命名(StepDefs.j

  • 我一直在验证下面的回答。 当我使用空手道发出获取请求时,我会得到以下响应,我想验证它。 我试过: 它说它不是字符串。你能帮我确认一下这个请求吗?

  • 我试图为下面的响应编写JSON模式。响应是动态的它可以是细节或细节。如果响应中的是,那么响应将包含人对象(组织对象将不可用)。如果是,组织详细信息将包含在响应中(人对象将不可用)。下面给出了两种不同的预期反应 我试图使用下面给出的模式使上述条件有效 我目前面临的问题是,如果响应中的是,它会抛出以下错误 是否有任何方法可以在模式中指定,如果person对象可用,则organization对象将不可用

  • 我只是想知道如何进行条件模式验证。API响应是基于键的动态响应。如果是,那么,人的详细信息将被包括,如果是组织的详细信息将被包括在JSON响应中。所以响应可以是以下任何一种形式 我为验证上述2个场景而创建的架构如下 但是架构与实际响应不匹配。我应该对架构进行哪些更改才能使其工作?

  • 我需要解析和打印ns4:功能部分。空手道以json格式打印它。我试着参考这个答案。但是,我得到'ERROR:'前缀'xsi'的命名空间没有被声明.'错误,如果使用建议的xPath.即, 这是我的XML:它包含许多具有不同“ns”值的部分,但我在这里给出了一个额外的内容。 这是我使用的xPath; 注意:我将上述xml保存在一个单独的文件test1中。xml。我只是在读它并解析它的值。 这就是我得到

  • 问题内容: 我需要在此重命名: 我试过了 但返回:。 问题答案: 如文档中所述,无法使用单个命令直接重命名数组中的字段。您唯一的选择是遍历收集文档,阅读它们并使用$ unset old / $ set new操作更新每个文档。