如何在空手道中检索特定键的所有值

时间:2018-10-26 13:52:19

标签: karate

如何从下面的响应中检索部件号。在下面的响应中

  "10000061","10000062","10000063"

本质上是动态的。我必须将这些部件号与数据表部件号进行匹配。(在响应中,可能有10个以上的部件号(基于输入),我必须对其进行验证。)

{ "added": true, "lineItems": { "1111111": { "itemCore": { "partNumber": 
"10000061" } }, "222222": { "itemCore": { "partNumber": "10000061" } }, 
 "3333333": { "itemCore": { "partNumber": "10000063" } } } } 

尝试过以下

def partNum= get[0] response..itemCore.partNumber[*] but getting empty array.
def partNum= get[0] response..itemCore.partNumber but getting empty value.

我的第二种方法也给了我空洞的价值。

 * def keys = function(obj){ return response.lineItems.keySet() }
 * json dynamicValue= keys(response)
 * print 'dynamic value '+dynamicValue
 * def first = dynamicValue[0]
 * print response.lineItems.dynamicValue[0].itemCore.partNumber
 * print response.lineItems.first.itemCore.partNumber

2 个答案:

答案 0 :(得分:2)

这是另一种解决方案,使用karate.forEach()也可以在地图上操作,而不仅仅是列表:

  * def keys = []
  * eval karate.forEach(response.lineItems, function(k){ keys.add(k) })
  * print keys

答案 1 :(得分:1)

要检索特定密钥的数据,可以在jsonPath中使用深度扫描运算符,

* def partNumbers = karate.jsonPath(response,"$..partNumber")