2017-06-15 11 views
0

オブジェクト。パイソン:追加JSONは、私はIPアドレスのリストを反復処理しようとしている、と私のURLからJSONデータを抽出し、ネストされたリストにそのJSONデータを入れしようとしているネストされたリストに

それは私のコードは何度も私のリストを上書きしているかのように思われ、唯一の代わりに私が指定されている多くの、1つのJSONオブジェクトが表示されます。

は、ここに私のコードです:

for x in range(0, 10): 
    try: 
     url = 'http://' + ip_addr[x][0] + ':8080/system/ids/' 
     response = urlopen(url) 
     json_obj = json.load(response) 
    except: 
     continue 

    camera_details = [[i['name'], i['serial']] for i in json_obj['cameras']] 

for x in camera_details: 
    #This only prints one object, and not 10. 
    print x 

にはどうすればリストに私のJSONオブジェクトを追加して、ネストされたリストに「名前」と「シリアル」の値を抽出することができますか?

+0

正しくコードをインデントしてください...正しく修正しましたか? –

+0

@WillemVanOnsemはい、あなたが持っている、そのことについて申し訳ありません。ありがとう! – juiceb0xk

答えて

1

は、あなたのコード内でこの

camera_details = [] 
for x in range(0, 10): 
    try: 
     url = 'http://' + ip_addr[x][0] + ':8080/system/ids/' 
     response = urlopen(url) 
     json_obj = json.load(response) 
    except: 
     continue 

    camera_details.extend([[i['name'], i['serial']] for i in json_obj['cameras']]) 

for x in camera_details: 
    print x 

を試してみてください、あなたはどこにのみ、最後のリクエストデータ

取得

ベストリストの内包表記を追加使用して回避するだろう

camera_details = [] 
for x in range(0, 10): 
    try: 
     url = 'http://' + ip_addr[x][0] + ':8080/system/ids/' 
     response = urlopen(url) 
     json_obj = json.load(response) 
    except: 
     continue 
    for i in json_obj['cameras']: 
     camera_details.append([i['name'], i['serial']]) 

for x in camera_details: 
    print x 
+0

はどうもありがとうございました。これは私のために働くように見えたし、それがこちら側からどのように機能するかを見て、私は私のリストを解釈されている必要がありますどのように明確な洞察力を与えるました。すごく、ありがとう! – juiceb0xk

1

にコードを分割してください小さく、簡単に部品を消化する。これは、何が起こっているのかを診断するのに役立ちます。

camera_details = [] 
for obj in json_obj['cameras']: 
    if 'name' in obj and 'serial' in obj: 
     camera_details.append([obj['name'], obj['serial']]) 
関連する問題