Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 如何在空手道中循环两个json数组并过滤结果?_Arrays_Json_Automation_Karate - Fatal编程技术网

Arrays 如何在空手道中循环两个json数组并过滤结果?

Arrays 如何在空手道中循环两个json数组并过滤结果?,arrays,json,automation,karate,Arrays,Json,Automation,Karate,我有2JSON数组 a= [{"[{ "Id": "123","Types": "Dial"},{"Id": "963", "Types": "Post"},{"Id": "456","Types": "Dial"}, { "Id&qu

我有2JSON数组

a= [{"[{ "Id": "123","Types": "Dial"},{"Id": "963", "Types": "Post"},{"Id": "456","Types": "Dial"},
  { "Id": "569","Types": "Dial"}]
我想从“a”验证“Types”值是否为“POST”,因为JSON“b”中对应的“id”的“Type”值为“null”


请提供帮助。

您可以通过使用Json路径与空手道集成来实现这一点,也可以使用过滤功能

* def IdArray = karate.jsonPath(a,"$..[?(@.Types=="Post")].Id")  
* def FilteredArray = call FilterFunction(IdArray,b)
您可以将过滤器函数定义为

* def FilterFunction =
"""
function(arr,b)
{ var result = []
 for(i=0;i<arr.length;i++)
   { var Mypath = "$..[?(@.Id==\""+ arr[i] +"\")].Type"
     var newArr = karate.jsonPath(b,Mypath)
     karate.apend(result,newArr)
   }
 return result
}
""""
*def过滤器功能=
"""
功能(arr,b)
{var result=[]

for(i=0;iThanks)获取帮助。filter函数返回一个空数组。我遵循了前面提到的相同代码。也尝试了不同的JSON数组。
* def FilterFunction =
"""
function(arr,b)
{ var result = []
 for(i=0;i<arr.length;i++)
   { var Mypath = "$..[?(@.Id==\""+ arr[i] +"\")].Type"
     var newArr = karate.jsonPath(b,Mypath)
     karate.apend(result,newArr)
   }
 return result
}
""""