首页 > 解决方案 > 从 json 获取数据

问题描述

我想从 json 中获取数据。我有一个循环访问所有级别的想法。我只能从一个块中提取数据。

print(output['body']['data'][0]['list'][0]['outUcastPkts'])

如何获取其他数据?

import json,urllib.request

data = urllib.request.urlopen("http://172.0.0.0/statistic").read()
output = json.loads(data)

for elt in output['body']['data']:
    print(output['body']['data'][0]['inUcastPktsAll'])
    for elt in output['list']:
        print(output['body']['data'][0]['list'][0]['outUcastPkts'])
{
  "body": {
    "data": [
      {    
        "inUcastPktsAll": 3100617019,
        "inMcastPktsAll": 7567,
        "inBcastPktsAll": 8872,
        "outPktsAll": 8585575441,
        "outUcastPktsAll": 8220240108,
        "outMcastPktsAll": 286184143,
        "outBcastPktsAll": 79151190,
        "list": [
          {
            "outUcastPkts": 117427359,
            "outMcastPkts": 1990586,
            "outBcastPkts": 246120
          },
          {
            "outUcastPkts": 0,
            "outMcastPkts": 0,
            "outBcastPkts": 0
          }
        ]
      },
      {
        "inUcastPktsAll": 8269483865,
        "inMcastPktsAll": 2405765,
        "inBcastPktsAll": 124466,
        "outPktsAll": 3101194852,
        "outUcastPktsAll": 3101012296,
        "outMcastPktsAll": 173409,
        "outBcastPktsAll": 9147,
        "list": [
          {
            "outUcastPkts": 3101012296,
            "outMcastPkts": 90488,
            "outBcastPkts": 9147
          },
          {
            "outUcastPkts": 0,
            "outMcastPkts": 0,
            "outBcastPkts": 0
          }
        ]
      }
    ],
    "msgs": [ "successful" ]
  },
  "header": {
    "opCode": "1",
    "token": "",
    "state": "",
    "version": 1
  }
}

标签: pythonjsonpython-3.x

解决方案


output = json.loads(data)              #Type of output is a dictionary.
                                       #Try to use ".get()" method.
print(output.get('body'))              #Get values of key 'body'
print(output.get('body').get('data'))  #Get a list of key 'data' 

如果键不存在,'.get()' 方法将返回 None。 https://docs.python.org/3/library/stdtypes.html#dict.get


推荐阅读