从嵌套的json url获取字段



我正在尝试获取字段(python 3):

  1. traffictotal
  2. usaverage
  3. dsaverage

但是我只能从"data"得到。我如何访问其他字段?

import json,urllib.request
data = urllib.request.urlopen("http://172.xx.xx.xx/stcs/bandwidthconsumption").read()
output = json.loads(data)
print(output['body']['data'][7])
{
"body": {
"data": [
{
"traffictotal": 0.28,
"usaverage": 1.12,
"dsaverage": 19.56,
"ustotal": 0.01,
"dstotal": 0.26
}
],
"msgs": [ "Successful" ]
},
"header": {
"opCode": "1",
"token": "",
"state": "",
"version": 1
}

有多个选项可以获取字段值

  1. 如果内部列表只有一个元素,如示例所示,您可以只获取第一个元素并读取与键匹配的值:
print(output['body']['data'][0]['traffictotal'])
print(output['body']['data'][0]['usaverage'])
print(output['body']['data'][0]['dsaverage'])

输出:

0.28
1.12
19.56
  1. 如果列表中有多个元素,您可以遍历它们并根据数据准备字典/列表,并从中获取值。下面是创建字典的示例:
result = {key: value for elt in output['body']['data'] for key, value in elt.items() if key in ['traffictotal', 'usaverage', 'dsaverage']}
print(result)
print(result['traffictotal'])
print(result['usaverage'])
print(result['dsaverage'])

输出:

{'traffictotal': 0.28, 'usaverage': 1.12, 'dsaverage': 19.56}
0.28
1.12
19.56