我想迭代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}
答案 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}