2016-06-18 4 views
1

저는 객체와 같은 json을 반복하는 방법을 알아 내려고 노력해 왔습니다. 그래서 그 이름으로 사용자 ID를 얻을 수있었습니다.어떻게 중첩 된 json dicts를 반복 할 수 있습니까?

JSON

{ 
    "ApiSearchResult": [ 
     { 
      "totalNumberResults": 55, 
      "type": "User", 
      "searchResults": [ 
       { 
        "firstName": "shashank", 
        "name": "0o_shashank._o0", 
        "uid": 81097836 
       }, 
       { 
        "firstName": "Shahnawaz", 
        "name": "0shahnawaz.0", 
        "uid": 83697589 
       }, 
       { 
        "firstName": "Ashu", 
        "name": "ashu.-3", 
        "uid": 83646061 
       }, 
       { 
        "bgImage": "photoalbum_491396460_user82597906-1-jpeg.jpg", 
        "firstName": "Garfield", 
        "name": "beast.boy", 
        "uid": 82597906 
       }, 
       { 
        "firstName": "Bharath", 
        "name": "bharath_mohan69", 
        "uid": 80197615 
       }, 
       { 
        "bgImage": "photoalbum_481041410_user79819261-1-jpg.jpg", 
        "firstName": "Wille-ICE", 
        "name": "blowhole", 
        "uid": 79819261 
       } 
      ] 
     } 
    ] 
} 

def getidbyname(name): event = response['ApiSearchResult'][0]['searchResults'][0] for key, value in event.iteritems(): if value == name: continue elif key == "uid": return value 

그러나이 작동하지 않습니다 파이썬

은, 난 정말이 많은 중첩 된 요소로 일한 적이 없어요.

+0

중첩 된 사전을 사용하고 있습니까? Python으로 JSON을 다루기위한 라이브러리가 있습니다. https://docs.python.org/2/library/json.html – Thoth19

답변

2
def getidbyname(name): 
    for i in data['ApiSearchResult'][0]['searchResults']: 
     if i['name'] == name: 
      return i['uid'] 
+0

Thanks! 나는 그것을 시도했지만'searchResults'가 목록을 가지고 있다고 생각했기 때문에 결국 [0]을 추가했다. 그러나 그것은 내가 필요로하는 것을하지는 못했지만 이것은 효과가 있습니다. – Michael

2

응답이 이미 파이썬 사전 인 경우이 작동하지 않을 수 있습니다 : 귀하의 의견은 텍스트 값이

def getidbyname(name): 
    for event in data["ApiSearchResult"][0]["searchResults"]: 
     if event["name"] == name: 
      return event["uid"] 

경우, 그것을 밖으로 파이썬 사전을 얻을 수 json.loads(response)를 사용해야합니다.

관련 문제