如何使用Python迭代JSON值?

时间:2017-06-07 04:28:03

标签: python json file

我的JSON数据如下所示:

{
    "cameras": [
        {
            "item": "810-00022",
            "name": "front",
            "serial": "000287"
        },
        {
            "item": "810-00022",
            "name": "rear",
            "serial": "000166"
        },
        {
            "item": "810-00022",
            "name": "left",
            "serial": "000492"
        },
        {
            "item": "810-00022",
            "name": "right",
            "serial": "000282"
        },
        {
            "item": "810-00022",
            "name": "inside",
            "serial": "000143"
        }
    ],
    "item": "810-00023",
    "mac": "14:1f:ba:90:01:16",
    "name": 1623,
    "serial": "000408"
}
{
    "cameras": [
        {
            "item": "810-00032",
            "name": "inside",
            "serial": "000007"
        },
        {
            "item": "810-00022",
            "name": "right",
            "serial": "000941"
        },
        {
            "item": "810-00022",
            "name": "front",
            "serial": "000637"
        },
        {
            "item": "810-00022",
            "name": "left",
            "serial": "000430"
        }
    ],
    "item": "810-00023",
    "mac": "14:1f:ba:90:01:9e",
    "name": 1599,
    "serial": "000309"
}

如何为每个条目输出名称(不是摄像机名称)?

理论上,我希望能够打印以下16231599

我有以下内容,但由于某种原因它无效:

json2 = open('C:\\Users\\' + comp_name + '\\Documents\\Python Firmware Script\\curl\\src\\systemidsout.json')
json2_obj = json.load(json2)

for i in json2_obj[]:
     print i['name']

我希望以上的工作方式与我的其他JSON文件一样,但我猜是因为布局可能不同,它不起作用。

如何在JSON文件中输出'name'值?

此外,作为一个额外的问题,如何在相机阵列中输出个别名称?

1 个答案:

答案 0 :(得分:3)

如果您将for i in json2_obj[]:更改为i in json2_obj:,则会有效。 如果要在摄像机阵列中输出各个名称,请使用

for j in i['cameras']:
    print(j['name'])

for循环中。

简而言之,您的JSON数据实际上有2个JSON。如果要从一个文件中读取它们,可能需要将其更改为[{...},{...}]格式。否则,json.load()可能会引发错误。