2016-06-18 4 views
1

Я пытался выяснить, как я могу перебирать объект, похожий на json, поэтому я могу получить идентификатор пользователя по его имени.Как я могу перебирать вложенные 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 
       } 
      ] 
     } 
    ] 
} 

Python

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

Вы используете вложенные словари? Существуют библиотеки для работы с JSON в python. 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

Спасибо! Я пробовал это, но я добавил [0] в конце, потому что думал, что у 'searchResults' есть список. Но это не помогло, но это работает. – Michael

2

Это может сработать, если ваш ответ уже словарь питона:

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

Если вход текстовое значение, вам нужно использовать json.loads(response), чтобы получить словарь питона из него.

Смежные вопросы