如何使用 Karate 循环遍历 JSON 数组并匹配每个对象中键的长度

问题描述 投票:0回答:1

我有一个看起来像这样的 JSON 数组 -

{ “products”: [ { “code”: “abc”, “name”: “test” }, { “code”: “abc2”, “name”: “test2” }, … ] }

我想循环 json 数组并使用空手道检查长度。 f 每个项目中的键数。使用上面的示例,键数的长度应为 2。任何帮助将不胜感激!

我尝试过通过这样做来获取钥匙

  • def res = 获取 $..products.[*]
  • 打印空手道.keysOf(res)

但是,它只返回 null 并且执行 karate.sizeOf 返回总大小而不是每个项目的大小。

karate
1个回答
0
投票

我个人认为你应该做更好的断言,比如检查键和值。请参考这个答案

但无论如何,这就是你的问题的答案:

* def products = [{a: 1, b: 2}, {x: 1, y: 2}]
* def sizes = products.map(x => Object.keys(x).length)
* match each sizes == 2

有关

map()
的说明,请参阅:https://stackoverflow.com/a/76091034/143475

并且

Object.keys()
是一个标准的JS函数,类似于
karate.keysOf()
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys

© www.soinside.com 2019 - 2024. All rights reserved.