Как получить вложенные данные ответа из json python

#python #json #api

#python #json #API

Вопрос:

Я вызываю API, и это мой ответ JSON:

 {'data': [{
   'id': 'd-1225959', 
   'startTime': '2022-12-30T00:00:00.000Z', 
   'endTime': '2022-12-30T23:59:00.000Z', 
   'checkedInAt': None, 
   'checkedOutAt': None, 
   'status': 'PENDING', 

'space': {
   'id': 'd-4063963', 
   'name': '082', 
   'type': 'DESK', 
   'createdAt': '2021-07-06T11:48:57.000Z', 
   'updatedAt': '2021-07-06T11:48:57.000Z', 
   'isAvailable': False, 
   'assignedTo': None, 
   'locationId': '133778', 
   'floorId': '41681', 
   'floorName': 'Car Park', 
   'neighborhoodId': '92267', 
   'neighborhoodName': 'NEI1'}}
 

Я изо 'space' 'id' 'name' всех сил пытаюсь извлечь и, если я выполняю вложенный цикл python, например, чтобы он возвращал только заголовки, 'id' а 'name' не значения, хранящиеся внутри.

 for order in response['data']:
        print(order['id'])
        print(order['startTime'])
        print(order['endTime'])
        print(order['checkedInAt'])
        print(order['checkedOutAt'])
        print(order['status'])
        print(order['space'])
        for doc in response['space']:
            print(doc['id'], doc['name'])
 

Любая помощь в этом была бы очень признательна!

Комментарии:

1. Ваши примерные данные не являются допустимыми для Python.

2. Ваш ответ JSON не имеет себе равных [ .

Ответ №1:

for doc in response['space']: будет выполняться итерация по ключам в response['space'] dict, т.Е. doc Будет str .

Вы хотите сделать doc = response['space'] вместо и затем print(doc['id']) . или напрямую print(response['space']['id']) .

Обратите внимание, вы можете использовать dict.get() метод, чтобы избежать KeyError .

 # if response dict has no 'space' key, return empty dict.
# if no 'id' key - return None
space_id = response.get('space', {}).get('id') 
 

Комментарии:

1. Будет ли это выглядеть примерно так? spacedata = response['space'].get(['id']) print(spacedata)

2. Проверьте мой обновленный ответ