首页 > 解决方案 > Python解析API响应Json主体嵌套数据

问题描述

我正在尝试使用 python 调用 get api 并获取 covid 疫苗详细信息并存储到一个适当的格式中。进入同一个我能够获取像“center_id,name,address,state_name”这样的中心数据,但我无法获取如下的会话数据

在此处输入图像描述

下面是我如何解析 JSON 响应。

dataJ = json.loads(r.text)
for i in range(len(dataJ['centers'])):
    center = dataJ['centers'][i]['name']
    address = dataJ['centers'][i]['address']
    state = dataJ['centers'][i]['state_name']
    district = dataJ['centers'][i]['district_name']
    pin = dataJ['centers'][i]['pincode']
    date =dataJ['centers'][i]['date']
    print(center,"-",address,"-",state,"-",district,"-",pin,"-",date)

它给了我如下错误

日期 =dataJ['centers'][i]['date'] KeyError: 'date'

有人可以在这方面帮助我吗?

标签: pythonjson

解决方案


你需要做一些类似于sessions数组的事情,就像你对centers数组所做的那样。请参阅NEW下面的标记部分:

dataJ = json.loads(r.text)
for i in range(len(dataJ['centers'])):
    center = dataJ['centers'][i]['name']
    address = dataJ['centers'][i]['address']
    state = dataJ['centers'][i]['state_name']
    district = dataJ['centers'][i]['district_name']
    pin = dataJ['centers'][i]['pincode']
    date =dataJ['centers'][i]['date']
    print(center,"-",address,"-",state,"-",district,"-",pin,"-",date)

    # NEW: now process each session like you want
    for j in range(len(dataJ['centers'][i]['sessions'])):
        # do what you want with the session here:
        # it's also easier to use variables rather than reproducing the entire index sequence repeatedly
        session = dataJ['centers'][i]['sessions'][j]
        session_id = session['session_id']
        # ...

推荐阅读