我正在尝试使用以下脚本来执行输出 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'])