我正在使用API从外部源获取JSON数据,并且不确定如何从JSON中获取特定的元素。
json_data = json.loads(resp.text) #resp.text is the response from the API call
print(json_data)打印以下内容(原始输出为单行/平面输出,因此我已格式化以使其更具可读性)
[
{'version': {
'rowVersion': 2044},
'name': 'Administrator',
'permissions': [
{'path': 'Activity/Cancel All', 'name': 'Activity/Cancel All'},
{'path': 'Activity/View All', 'name': 'Activity/View All'},
{'path': 'Audit Log/Edit', 'name': 'Audit Log/Edit'},
{'path': 'Audit Log/View', 'name': 'Audit Log/View'}
],
'id': 1,
'permissionPaths': ['Activity/Cancel All', 'Activity/View All', 'Audit Log/Edit', 'Audit Log/View'],
'displayName': 'Administrator'
},
{'version': {
'rowVersion': 964033},
'name': 'ViewOnly',
'permissions': [
{'path': 'Activity/View All', 'name': 'Activity/View All'},
{'path': 'Audit Log/View', 'name': 'Audit Log/View'},
],
'id': 4,
'permissionPaths': ['Activity/View All', 'Audit Log/View']
'displayName': 'ViewOnly'
}
]以下是
for ROLES in json_data:
print(str(ROLES["name"]))指纹:
Administrator
ViewOnly 到目前为止,还不错..。但是,我希望输出是角色和权限名称,类似于.
Administrator, Activity/Cancel All
Administrator, Activity/View All
Administrator, Audit Log/Edit
Administrator, Audit Log/View
ViewOnly, Activity/View All
ViewOnly, Audit Log/View请告诉我如何在Python中实现这一点。谢谢!
发布于 2018-02-23 16:35:33
这会有帮助的。
# -*- coding: utf-8 -*-
json_data = [
{'version': {
'rowVersion': 2044},
'name': 'Administrator',
'permissions': [
{'path': 'Activity/Cancel All', 'name': 'Activity/Cancel All'},
{'path': 'Activity/View All', 'name': 'Activity/View All'},
{'path': 'Audit Log/Edit', 'name': 'Audit Log/Edit'},
{'path': 'Audit Log/View', 'name': 'Audit Log/View'}
],
'id': 1,
'permissionPaths': ['Activity/Cancel All', 'Activity/View All', 'Audit Log/Edit', 'Audit Log/View'],
'displayName': 'Administrator'
},
{'version': {
'rowVersion': 964033},
'name': 'ViewOnly',
'permissions': [
{'path': 'Activity/View All', 'name': 'Activity/View All'},
{'path': 'Audit Log/View', 'name': 'Audit Log/View'},
],
'id': 4,
'permissionPaths': ['Activity/View All', 'Audit Log/View'],
'displayName': 'ViewOnly'
}
]
for ROLES in json_data:
for n in ROLES["permissions"]:
print(ROLES["name"], n["name"])输出:
('Administrator', 'Activity/Cancel All')
('Administrator', 'Activity/View All')
('Administrator', 'Audit Log/Edit')
('Administrator', 'Audit Log/View')
('ViewOnly', 'Activity/View All')
('ViewOnly', 'Audit Log/View')发布于 2018-02-23 16:41:00
这一任务有许多解决方案。下一节展示了列表理解的用法。
for role in json_data:
print("\n".join(["{role.name}, {permission.name}".format(role=role, permission=permission) for permission in role.permissions]))还可以添加额外的for-循环。
for role in json_data:
for permission in role.permissions:
print("{role.name}, {permission.name}".format(role=role, permission=permission))发布于 2018-02-23 16:47:31
这是我的建议,它允许您通过一行样式代码在列表中获得所需的内容。如果需要,for循环仅用于打印列表中的每个元素:
myList = ["{0}, {1}".format(ROLES["name"], perm["name"]) for ROLES in json_data for perm in ROLES['permissions']]
for i in myList:
print(i)https://stackoverflow.com/questions/48952350
复制相似问题