【问题标题】:How to find dynamic key values in Karate?如何在空手道中找到动态键值?
【发布时间】:2020-11-02 04:01:25
【问题描述】:

我正在使用 JIRA API 来根据循环名称获取循环 ID

API:http://localhost:8080/rest/zapi/latest/cycle?projectId=78654&versionId=123

我收到以下回复:

{

"1345": {
    "totalExecutions": 0,
    "endDate": "",
    "description": "",
    "versionName": "Unscheduled",
    "projectKey": "ABC",
    "totalDefects": 0,
    "versionId": 123,
    "name": "First cycle",
    "totalFolders": 0,
    "projectId": 78654
},
"5789": {
    "totalExecutions": 0,
    "endDate": "",
    "description": "",
    "versionName": "Unscheduled",
    "projectKey": "ABC",
    "totalDefects": 0,
    "versionId": 123,
    "name": "Karate DEMO",
    "totalFolders": 0,
    "projectId": 78654
},
"6543": {
    "totalExecutions": 0,
    "endDate": "",
    "description": "",
    "versionName": "Unscheduled",
    "projectKey": "ABC",
    "totalDefects": 0,
    "versionId": 123,
    "name": "Second Cycle",
    "totalFolders": 0,
    "projectId": 78654
},
"recordsCount": 3
}

这里的 ID 是动态的,即 1345,5789,6543

如何使用 karate jsonpath 获取 ID 即 5789,其中名称为“Karate DEMO”

【问题讨论】:

    标签: karate


    【解决方案1】:

    使用 JSON 转换来改变形状,这使得 JsonPath 更容易。您还可以找到数据,因为karate.forEach() 是“扫描”:https://github.com/intuit/karate#json-transforms

    * def list = []
    * def fun = function(k, v){ karate.appendTo('list', { key: k, val: v } )}
    * karate.forEach(response, fun)
    * def keys = $list[?(@.val.name=='Karate DEMO')].key
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多