如何使用机器人框架迭代JSON数组

时间:2017-03-17 19:42:48

标签: python-2.7 robotframework

我想迭代json响应并获取id和name元素数据。我正在尝试的响应json和代码如下。有人能让我知道我在做什么错误。

[
  {
    "id": 3,
    "policyRevId": 3,
    "busId": "POL_0003",
    "revision": 1,
    "name": "CIS Microsoft Windows Server 2012 R2 v2.2.1"
    },
  {
    "id": 2,
    "policyRevId": 2,
    "busId": "POL_0002",
    "revision": 1,
    "name": "CIS SUSE Linux Enterprise Server 11 Benchmark v 2.0"

  },
  {
    "id": 1,
    "policyRevId": 1,
    "busId": "POL_0001",
    "revision": 1,
    "name": "Payment Card Industry (PCI) Data Security Standard version 3.1"
  }
]


*** Settings ***
Library           RequestsLibrary
Library           Collections
Library           strings


*** Test case ***

Get Policy With Auth
    @{auth}=  Create List  user  pass
    Create Session    httpbin    https://test123.com/  auth=@{auth}
    ${resp}=  Get Request  httpbin  uri=/policies/
    :FOR   ${i}   in  ${resp.json()}
    \   Log  ${i}
    \   ${get_policy_id}=    Get Variable Value    ${resp.json()[i]['id']}
    \   ${policy_name}=    Get Variable Value    ${resp.json()[i]['name']}
    \   Log    ${policy_id},${policy_name}

1 个答案:

答案 0 :(得分:4)

${resp.json()}中的数据是一个列表,因此您应该能够直接遍历列表中的项目。请注意,在以下示例中,@语句中使用了:FOR${item}是字典而不是索引:

:FOR   ${item}   in  @{resp.json()}
\   Log  ${item}
\   ${get_policy_id}=  Set variable    ${item['id']}
\   ${policy_name}=    Set variable    ${item['name']}
\   Log    ${policy_id},${policy_name}