요약 :이 경우 JSON 응답을 구문 분석하고 [status of dynamicValue_GGG of payload] 값을 가져 오는 방법이 혼동되었습니다.
전체 질문 : 아래 Python 코드를 통해 REST API에 도달하면 다음과 같은 (정리 된) 응답이 표시됩니다.
응답 = 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
파이썬 코드가 실행될 때 " " 오류를 제공합니다 .
이 경우 색인뿐만 아니라 두 키의 힘을 사용할 수있는 방법이 있습니까?
Python에서 사전에있는 값의 순서는 무작위이므로 인덱싱을 사용할 수 없습니다. 잠재적으로 재귀적일 수있는 모든 요소를 반복하고 원하는 항목인지 테스트해야합니다. 예를 들면 :
def find_submodels(your_dict):
for item_key, item_values in your_dict.items():
if 'status' in item_values:
print item_key, item_values['status']
if type(item_values) == dict:
find_submodels(item_values)
find_submodels(your_dict)
다음과 같이 출력됩니다.
12345 active
dynamicValue_67890 active
dynamicValue_66778 active
dynamicValue_33445 active
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다