为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

撒科打诨 2021-11-30 19:25:03
下面是我拥有的示例 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 --> onlineserver03:5454 --> online
查看完整描述

2 回答

?
神不在的星期二

TA贡献1963条经验 获得超6个赞

这是从 JSON 获取服务器状态的另一种方法。


json_info = {

     "server01":{

     "address":"server01:5454",

     "options":{ },

     "state":"online"

   },

     "server02":{

     "address":"server02:5454",

     "options":{ },

     "state":"online"

  },

     "server03":{

     "address":"server03:5454",

     "options":{ },

     "state":"online"

  }

}


for server in json_info.values():

  server_status = server['state']

  if 'online' in server_status:

      server_name = server.get('address')

      print ('{} is online'.format(server_name.split(':')[0]))

      # output 

      # server01 is online

      # server02 is online

      # server03 is online

      # 

      # print ('{} --> online'.format(server_name))

      # output 

      # server01:5454 --> online

      # server02:5454 --> online

      # server03:5454 --> online

  else:

      server_name = server.get('address')

      print('{} is offline'.format(server_name.split(':')[0]))


查看完整回答
反对 回复 2021-11-30
?
慕沐林林

TA贡献2016条经验 获得超9个赞

将其视为字典:


for k, v in sample.items():

      print(v['address'] + "-->" + v['state'])


查看完整回答
反对 回复 2021-11-30
  • 2 回答
  • 0 关注
  • 233 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信