猿问

如何从json输出中递归提取特定字段?

下面是我拥有的示例 json 文档或 json 变量。我正在使用 python 来提取输出部分中提到的所需字段。


有人可以帮助了解如何做到这一点吗?


json_variable = 

    {  

       "server01":{  

          "address":"server01:5454",

          "options":{ },

          "state":"online"

       },

       "server02":{  

          "address":"server02:5454",

          "options":{ },

          "state":"online"

       },

       "server03":{  

          "address":"server03:5454",

          "options":{ },

          "state":"online"

       }

    }


 for x in json_variable:

        print(x["address"])


    Error:

      Traceback (most recent call last):

      File "<string>", line 30, in <module>

      File "<string>", line 18, in getServerStatus

      TypeError: 'shell.Dict' object is not iterable

我可以通过对以下字段进行硬编码来获得所需的输出,但我想动态地执行此操作,因为服务器的数量取决于查询的系统和返回的 json。


print(json_variable["server01"]["address"])

print(json_variable["server02"]["address"])

print(json_variable["server03"]["address"])

所需输出:


server01:5454 --> online 

server02:5454 --> online

server03:5454 --> online


撒科打诨
浏览 235回答 2
2回答

神不在的星期二

这是从 JSON 获取服务器状态的另一种方法。json_info = {&nbsp; &nbsp; &nbsp;"server01":{&nbsp; &nbsp; &nbsp;"address":"server01:5454",&nbsp; &nbsp; &nbsp;"options":{ },&nbsp; &nbsp; &nbsp;"state":"online"&nbsp; &nbsp;},&nbsp; &nbsp; &nbsp;"server02":{&nbsp; &nbsp; &nbsp;"address":"server02:5454",&nbsp; &nbsp; &nbsp;"options":{ },&nbsp; &nbsp; &nbsp;"state":"online"&nbsp; },&nbsp; &nbsp; &nbsp;"server03":{&nbsp; &nbsp; &nbsp;"address":"server03:5454",&nbsp; &nbsp; &nbsp;"options":{ },&nbsp; &nbsp; &nbsp;"state":"online"&nbsp; }}for server in json_info.values():&nbsp; server_status = server['state']&nbsp; if 'online' in server_status:&nbsp; &nbsp; &nbsp; server_name = server.get('address')&nbsp; &nbsp; &nbsp; print ('{} is online'.format(server_name.split(':')[0]))&nbsp; &nbsp; &nbsp; # output&nbsp;&nbsp; &nbsp; &nbsp; # server01 is online&nbsp; &nbsp; &nbsp; # server02 is online&nbsp; &nbsp; &nbsp; # server03 is online&nbsp; &nbsp; &nbsp; #&nbsp;&nbsp; &nbsp; &nbsp; # print ('{} --> online'.format(server_name))&nbsp; &nbsp; &nbsp; # output&nbsp;&nbsp; &nbsp; &nbsp; # server01:5454 --> online&nbsp; &nbsp; &nbsp; # server02:5454 --> online&nbsp; &nbsp; &nbsp; # server03:5454 --> online&nbsp; else:&nbsp; &nbsp; &nbsp; server_name = server.get('address')&nbsp; &nbsp; &nbsp; print('{} is offline'.format(server_name.split(':')[0]))

慕沐林林

将其视为字典:for k, v in sample.items():&nbsp; &nbsp; &nbsp; print(v['address'] + "-->" + v['state'])
随时随地看视频慕课网APP

相关分类

Python
我要回答