python - 从 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
}
}
解决方案
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
推荐阅读
- html - 如何在 React js 中使用 Sass 变量和 mixins
- java - 在 Jframe 中自动调整 Jcomponents 的大小
- python - Python中用于数组的“GROUP BY”函数
- javascript - 如何将对象数组操作为不同的键和值?
- mysql - 我需要在mysql上查找并标记数据条目,从一个小时内的第三个开始
- python - 带有 Python 模块的 Docker 容器变得太大
- xpath - XPath:需要一个基于属性值的条件
- r - CSV 中的变量需要在 R 中转换为时间
- dynamic-pivot - 将行透视到列:多个列,没有聚合,没有硬编码值,每个主列未知 # 行
- postgresql - 在 Postgresql 中创建一百万条记录的最快方法?