TL; DR: Смущает вопрос о том, как проанализировать следующий ответ JSON и получить значение [статус 12345 из dynamicValue_GGG полезной нагрузки] в этом случае.Получение KeyError при разборе JSON в Python для последующего ответа
Полный вопрос: я получаю следующее как (продезинфицировать) ответ после удара REST API с помощью кода Python ниже:
response = requests.request("POST", url, data=payload, headers=headers).json()
{
"payload": {
"name": "asdasdasdasd",
"dynamicValue_GGG": {
"12345": {
"model": "asad",
"status": "active",
"subModel1": {
"dynamicValue_67890": {
"model": "qwerty",
"status": "active"
},
"subModel2": {
"dynamicValue_33445": {
"model": "gghjjj",
"status": "active"
},
"subModel3": {
"dynamicValue_66778": {
"model": "tyutyu",
"status": "active"
}
}
}
},
"date": "2016-02-04"
},
"design": "asdasdWWWsaasdasQ"
}
Если я делаю type(response['payload'])
, это дает мне 'dict
'.
Теперь я пытаюсь разобрать ответ выше и извлечь из него определенные ключи и значения. Проблема в том, что я не могу выполнять итерацию с помощью «индекса» и, скорее, должен указывать «ключ», но тогда ответ имеет определенные «ключи», которые динамически генерируются и отправляются. Например, клавиши «dynamicValue_GGG
», «dynamicValue_66778
» и т. Д. Не являются статическими, в отличие от клавиши «status
».
Я могу успешно разобрать, упоминая, как:
print response['payload']['dynamicValue_GGG']['12345'][status]
в этом случае я получаю ожидаемый выход = «active
».
Однако, так как я не имею никакого контроля на «dynamicValue_GGG
», он будет работать только тогда, когда я могу указать что-то вроде этого, вместо:
print response['payload'][0][0][status]
Но выше линия дает мне сообщение об ошибке: «KeyError: 0
», когда питон код выполнен.
Есть ли какой-то способ, в котором я могу использовать силу обоих ключей, а также индекс вместе в этом случае?
Знаете ли вы что-нибудь о динамическом диапазоне? Всегда ли это начинается с "dynamicValue_"? – Barmar
Вы можете перебирать ключи и значения словаря, пока не получите ключ, соответствующий шаблону динамических клавиш. – Barmar
Не следует ли указывать 'status' в' ['status'] '? – Barmar