迭代嵌套的JSON

时间:2017-09-01 13:51:00

标签: python json api

我正在尝试迭代json api,我无法获得我需要的数据

这是一个api响应示例。 “我知道这不是完整或有效的json :)”

{
"status": "running",
"reasons": [],
"nodes": {
    "Server1": {
        "status": "running",

我正在使用一个简单的for循环来迭代它!

for platforms in sbNode:
request = urllib2.Request(API URL)
json_res = json.load(urllib2.urlopen(request))
for node in json_res['nodes']:
    print node['status']

我收到一条错误消息

TypeError:字符串索引必须是整数

和normaly我只是打印for循环来查看json数据,但它只是打印Server1。

我迷失了......

帮助!!!

由于

2 个答案:

答案 0 :(得分:2)

Windows 7 machine是一本字典。迭代字典只会为您提供密钥,因此json_res['nodes']的第一个值可以是node。如果您想要键和值,可以使用'Server1'迭代:

.items()

如果您只想要节点的值,可以使用for key, node in json_res['nodes'].items():

.values()

答案 1 :(得分:0)

由于json_res['nodes']是字典

,您缺少一定程度的数据深度
json_res['nodes'] = {
    "Server1": {
        "status": "running",
         ...

您可以添加嵌套循环以打印服务器状态:

for node in json_res['nodes']:
    for server in node:
         print server['status']