Extrating Json response PYTHON

Question:

I need help my friends, it’s my first project with Api, and I’m not able to pull the data from the Api, it returns the following error.

Script:

response = data.json()

for number in response['mobile_phones']:
    dd = resposta['ddd']
    num = resposta['number']
    whatsapp = resposta['whatsapp_datetime']
    print(dd+num+whatsapp)

Erro:

Erro: KeyError: 'mobile_phones'

Response Api

{
    "cpf": 52289257591,
    "mobile_phones": [
      {
        "ddd": 27,
        "number": "999111151",
        "priority": 1,
        "cdr_datetime": null,
        "hot_datetime": null,
        "whatsapp_datetime": "2022-03-05 00:00:00",
        "cpc_datetime": null
      },
      {
        "ddd": 27,
        "number": "998608229",
        "priority": 2,
        "cdr_datetime": null,
        "hot_datetime": null,
        "whatsapp_datetime": "2022-03-07 00:00:00",
        "cpc_datetime": null
      },
      {
        "ddd": 27,
        "number": "992250660",
        "priority": 3,
        "cdr_datetime": null,
        "hot_datetime": null,
        "whatsapp_datetime": "2022-03-12 00:00:00",
        "cpc_datetime": null
      }
    ],
    "ip": "135.199.5.98",
    "plan": "Consulta simples"
  }
]
Asked By: wikid

||

Answers:

You can do this,

for number in response[0]['mobile_phones']:
    dd = number['ddd']
    num = number['number']
    whatsapp = number['whatsapp_datetime']
    print(dd, num, whatsapp)

response is a list, which has dictionary of values.

The list you are looking its need to access like this, response[0]['mobile_phones']

Output:

27 999111151 2022-03-05 00:00:00
27 998608229 2022-03-07 00:00:00
27 992250660 2022-03-12 00:00:00
Answered By: Rahul K P

Is the API actually returning an array of these objects? If so,

response = data.json()

for thing in response:
    for number in thing['mobile_phones']:
        dd = number['ddd']
        num = number['number']
        whatsapp = number['whatsapp_datetime']
        print(dd+num+whatsapp)

though I’d generally recommend using .get("mobile_phones") anyways especially if this is some API you don’t control so that if the response shape were to change ever to like "phones", your code can be more resilient to blowing up.

Answered By: ccchoy
Categories: questions Tags:
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.