Python:将JSON对象附加到嵌套列表

时间:2017-06-15 00:50:06

标签: json python-2.7 list nested

我试图遍历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对象附加到列表中,然后提取名称'和'连续'将值放入嵌套列表中?

2 个答案:

答案 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']])