Karate 如何验证使用空手道排序的嵌套数组元素

Karate 如何验证使用空手道排序的嵌套数组元素,karate,Karate,我正在使用空手道框架来验证API响应 我的API回复如下: { "Families": [ { "id1": 1, "names": "abc", "children": [ { "name": "ABC", "age": 2

我正在使用空手道框架来验证API响应

我的API回复如下:

{
  "Families": [
    {
      "id1": 1,
      "names": "abc",
      "children": [
        {
          "name": "ABC",
          "age": 2
        },
        {
          "name": "ZXC",
          "age": 2
        }
      ]
    },
    {
      "id1": 2,
      "name": "buses",
      "children": [
        {
          "name": "ABCD",
          "age": 2
        },
        {
          "name": "ZXCV",
          "age": 2
        },
        {
          "name": "ZXCVF",
          "age": 2
        }
      ]
    }
  ]
}

我的要求是验证子数组中的所有元素是否按名称排序。

请阅读我之前链接的文档和答案以了解这一点。如果这看起来太复杂,请使用Java

* def sort = 
"""
function(list) {
 var result = new java.util.ArrayList();
 karate.forEach(list, function(x){ karate.appendTo(result, x) });
 java.util.Collections.sort(result);
 return result;
}
"""

* def isValid = 
"""
function(x){
  var names = karate.jsonPath(x, '$.children[*].name');
  return karate.match(names, sort(names)).pass;
}
"""

* match each response.Families == '#? isValid(_)'

嗨,彼得,谢谢你的回复。我将json响应转换为pojo,并进行java验证。这对我有用。谢谢。您好,我刚刚尝试了这个,得到了以下响应:``org.opentest4j.AssertionFailedError:employeeQueries.feature:59-'match each'失败,不是json数组:+[type:json,value:com.jayway.jsonpath.internal。JsonContext@49962179],路径:$.data``@b您执行此过程所需的时间,然后: