Arrays 如何在空手道中循环两个json数组并过滤结果?
我有2JSON数组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
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
}
""""