我试图遍历IP地址列表,并从我的网址中提取JSON数据,并尝试将该JSON数据放入嵌套列表中。
似乎我的代码一遍又一遍地覆盖我的列表,并且只显示一个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 :(得分: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
答案 1 :(得分:1)
尝试将代码分解为更小,更易于消化的部分。这将帮助您诊断正在发生的事情。
camera_details = []
for obj in json_obj['cameras']:
if 'name' in obj and 'serial' in obj:
camera_details.append([obj['name'], obj['serial']])