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 
       } 
      ] 
     } 
    ] 
} 

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

ネストした辞書を使用していますか? 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

ありがとうございます!私はそれを試みたが、 'searchResults'にリストがあると思ったので、最後に[0]を追加した。しかし、それは私が必要なことをしなかったが、これはうまくいく。 – Michael

2

あなたの応答はすでにPythonの辞書である場合、これはうまくいくかもしれない:あなたの入力はテキスト値がある

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

場合、あなたはそれからPythonの辞書を取得するためにjson.loads(response)を使用する必要があります。

関連する問題