2016-06-30 4 views
1

私はウェブサイトのAPIを使って情報を取得しています。 100個の値を出力します。Pythonを使用してJson配列の特定の値を検索するには

この配列の特定の値を検索するベストプラクティスは何ですか?しかし、それは動作しません、

{ 
    "success":true, 
    "data": 
    { 
    "array": 
    [ 
     { 
     "id":"1","name":"Value1" 
     }, 
     { 
     "id":"2","name":"Value2" 
     } 
    ] 
    } 
} 

私は私が他の場所で見つかったこのスニペットを使用してデータを検索してみてください::だから

for name in (r.json()['data']['array'][0]['name']): 
    if r.json()['data']['array'][0] == s_name: 
    ident = r.json()['data']['array'][0]['id'] 
    name = r.json()['data']['array'][0]['name'] 
    print (name + ' - ' + ident) 
else: 
    print ('Nothing was found.') 

私がしようとしていた場合

配列は次のようになります参考Value1Pythonを使ってどうすればいいですか?

注:私は新人デベロッパーJsonを初めて使用しましたが、Pythonであまり経験がありません。

すべてのサポートをよろしくお願いいたします。

+0

は同じようにあなたが何かを行うことができます構造を見ています。 r.json()は、jsonの形式で文字列を返します。オブジェクトを取得するために文字列を 'ダンプする '必要があります – Whitefret

+0

@Whitefret' r'は 'request.get()'で得られ、 'r.json()'はPython辞書を返します。 – DeepSpace

+0

あなたは正確に何をしようとしていますか? –

答えて

1

コードのその部分がどこから来たが、それは非常に間違って見えるところわかりません。私はあなたがPython用のJSON librairyを見て必要があると思う

for attrs in r.json()['data']['array']: 
    if attrs['name'] == s_name: 
     ident = attrs['id'] 
     name = attrs['name'] 
     print(name + ' - ' + ident) 
     break 
else: 
    print('Nothing found!') 
+0

ありがとう!それは今働く。 –

1

あなたのコードでは、多くのことを簡素化することができます。

# no need to call `r.json` so many times, can simply save it to a variable 
json_data = r.json() 
for item in json_data["data"]["array"]: 
    if item["name"] == "Value1": 
     # do something...