【问题标题】:How to retrieve all values for a particular key in karate如何检索空手道中特定键的所有值
【发布时间】:2018-10-26 13:52:19
【问题描述】:

如何从以下响应中检索零件编号。在下面的回复中

  "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

【问题讨论】:

    标签: karate


    【解决方案1】:

    为了检索特定键的数据,您可以在 jsonPath 中使用深度扫描运算符,

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

    【讨论】:

    • @ Babu Sekaran :您的解决方案确实对我有用..谢谢..!
    【解决方案2】:

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

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

    【讨论】:

    • 感谢您的快速响应,它正在帮助我检索密钥集。但在这里,我尝试检索零件编号的所有值,并与来自数据表的数据值进行比较,如前所述。 { "partNumber": "10000061" } } 示例:|pNum| |10000061|
    • @sam 比较什么?哪个数据表? “比较”是什么意思?举个例子。请将此答案标记为已接受并打开一个新答案 - 请尝试在您的问题中更清楚
    • @ptrthomas 很抱歉让您感到困惑。请让我知道如何从上述响应中检索零件编号值。
    • @sam 您提到的预期零件编号导致了错误的解释,我现在已经更改了问题并更新了我的答案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多