Python 通过 JSON 迭代数据



我正在尝试使用以下脚本来执行输出 JSON 的 API 查询。我正在迭代 JSON 以打印所有 JSON 对象的特定字段(名称(。我的脚本打印所有项目(名称、分类、详细信息等(,而不是值。

脚本:

import requests
import json
query_url = 'https://IP-address/api/request'
data = {"query":"days>50", "type":"json", "size":3}
response = requests.post(query_url, json=data, verify=False)
json_data = json.loads(response.text)

for name in json_data[0]:
print (name)

杰森:

[
{ 
"name": "Android", 
"classification": "public", 
"detail": "Tag1, Tag2, Tag3", 
"days": 70, 
"date_last": "2017-07-21 05:48:07 AM"
},
{ 
"name": "iPhone", 
"classification": "public", 
"detail": "Tag4, Tag5, Tag6", 
"days": 75, 
"date_last": "2017-07-21 05:48:07 AM"
},
{
"name": "Microsoft", 
"classification": "public", 
"detail": "Tag3, Tag8, Tag9", 
"days": 90, 
"date_last": "2017-07-21 05:48:07 AM"
}
] 

我的感觉是,部分问题在于我们不清楚我们在看什么......所以我建议我们花点时间看看引擎盖下:

如果我们简单地要求 Python 向我们显示json_data中的每个项目,我们会看到 Python 已经读取了字典列表中的每个字典,并将为我们显示它们。

In [23]: for item in json_data:
...:     print(item)
...:
{'days': 70, 'classification': 'public', 'date_last': '2017-07-21 05:48:07 AM', 'name': 'Android', 'detail': 'Tag1, Tag2, Tag3'}
{'days': 75, 'classification': 'public', 'date_last': '2017-07-21 05:48:07 AM', 'name': 'iPhone', 'detail': 'Tag4, Tag5, Tag6'}
{'days': 90, 'classification': 'public', 'date_last': '2017-07-21 05:48:07 AM', 'name': 'Microsoft', 'detail': 'Tag3, Tag8, Tag9'}

从那里开始,由于每个项目都是一个字典,我们的下一步是要求 Python 仅提取与名称键关联的值:

In [21]: for item in json_data:
...:     print(item['name'])
...:
...:
Android
iPhone
Microsoft

如果要迭代json_data并打印每个名称,则需要按键访问每个字典值:

for d in json_data:
print(d['name'])

或者,如果您只想打印特定字典的"名称",例如 JSON 数据中的第一个字典,则不需要迭代:

print(json_data[0]['name'])

假设您想以特定方式打印输出,您可以使用str.format

for d in json_data:
print("Name: {} Days: {}".format(d['name'], d['days']))

你应该访问键'name'的值

下面是代码

for i in json_data[0]:
print (i['name'])

最新更新