从json获取数据

2024-10-03 09:09:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我想从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
  }
}

Tags: 数据jsonforoutputdatarequestbodyurllib
2条回答
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

在python中,您可以轻松地迭代列表中的对象,如下所示:

>>> l = [1, 2, 3, 7]
>>> for elem in l:
...     print(elem)
...
1
2
3
7

这与列表中的对象(整数、元组、字典)的类型有关。考虑到这一点,您的解决方案已经不远了,您只需做以下更改:

for entry in output['body']['data']:
    print(entry['inUcastPktsAll'])
    for list_element in entry['list']:
        print(list_element['outUcastPkts'])

这将为您提供的json对象提供以下信息:

3100617019
117427359
0
8269483865
3101012296
0

相关问题 更多 >