python 嵌套 json 数组

标签 python json

我正在访问 API,示例位于此处 ( https://developer.pagerduty.com/documentation/rest/escalation_policies/on_call )

SUBDOMAIN='XXX'
API_ACCESS_KEY='XXX'

headers = {
    'Authorization': 'Token token={0}'.format(API_ACCESS_KEY),
    'Content-type': 'application/json',
}
url = 'https://{0}.pagerduty.com/api/v1/escalation_policies/on_call'.format(SUBDOMAIN)
r = requests.get(url,headers=headers)
objData = r.json()


for objPolicy in objData['escalation_policies']:
    print objPolicy['name']
    for objOnCall in objPolicy['on_call']:
        print objOnCall['level']
        print objOnCall['start']
        print objOnCall['end']
        for objUser in objOnCall['user']:
            print objUser['name']

我目前收到错误

    print objUser['name']
TypeError: string indices must be integers

如果我的理解是对的,[]是一个列表,{}是一个对象?所以我试图以列表的形式访问一个对象,这就是为什么它不起作用?

嵌套的数量对于新手来说很难理解。有人可以解释并告诉我如何访问 on_call 政策中的每个用户吗?

谢谢

最佳答案

根据API documentationuser 下有一个对象(认为是“字典”):

...
"user": {
    "id": "P9TX7YH",
    "name": "Cordell Simonis",
    "email": "email_1@acme.pagerduty.dev",
    "time_zone": "Pacific Time (US & Canada)",
    "color": "dark-goldenrod"
}

为了反射(reflect)这一点,请将代码修改为:

user = objOnCall['user']  # user is a dictionary
print(user['name'])  # getting a value from a dictionary by a key

关于python 嵌套 json 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36870887/

相关文章:

python - 添加到帖子 : Page not found (404) 的评论

python - 有没有一种简单的方法可以用 Python 编写这个?

python - 分组 python 中的列表

python - PySpark:调用 o51.showString 时发生错误。没有名为 XXX 的模块

java - 如何在 Spinner 中从 JSON 获取所选项目 id?

ios - PUT 方法的 Alamofire Content-Type application/json

python - Pandas :计算一列中的空字符串

json - 解析嵌套的 json 对象 golang

ios - 从服务器获取数据后,直到单击屏幕后, TableView 才会显示数据

java - 在嵌套数组中使用 Jackson 序列化到一定深度