Python读取JSON值时出错

Python读取JSON值时出错,python,json,Python,Json,我有简单的JSON,因为我正在读取其中的值 这是一个代码: for row in returned_data['devices']: print (row['version']) 脚本打印所有“版本”值,最后 Traceback (most recent call last): File "api.py", line 370, in <module> main(sys.argv[1:]) File "api.py", line 71, in main

我有简单的JSON,因为我正在读取其中的值

这是一个代码:

 for row in returned_data['devices']:
     print (row['version'])
脚本打印所有“版本”值,最后

Traceback (most recent call last):
  File "api.py", line 370, in <module>
    main(sys.argv[1:])
  File "api.py", line 71, in main
    print (row['version'])
KeyError: 'version'
回溯(最近一次呼叫最后一次):
文件“api.py”,第370行,在
main(sys.argv[1:])
文件“api.py”,第71行,主
打印(第[‘版本’]行)
KeyError:“版本”

为什么?

如果您需要每一行都包含键
版本
,则您的字典中有一个错误,因为异常指示有一行缺少此键

在这种情况下,你必须检查你的字典为什么错了

否则,如果只有部分行包含
version
,并且不需要每行都有此键,则可以使用
.get()
函数绕过此错误,如下所示:

for row in returned_data['devices']:
    print (row.get('version'))
这将打印每行的版本,其中包含键,没有
version
的行则无键

您可以做的另一件事是使用
尝试…除了…

for row in returned_data['devices']:
    try:
        print (row['version'])
    except KeyError:
        print ("row does not contain 'version'")

如果您需要每一行都包含键
version
,则字典中有一个错误,因为异常指示有一行缺少此键

在这种情况下,你必须检查你的字典为什么错了

否则,如果只有部分行包含
version
,并且不需要每行都有此键,则可以使用
.get()
函数绕过此错误,如下所示:

for row in returned_data['devices']:
    print (row.get('version'))
这将打印每行的版本,其中包含键,没有
version
的行则无键

您可以做的另一件事是使用
尝试…除了…

for row in returned_data['devices']:
    try:
        print (row['version'])
    except KeyError:
        print ("row does not contain 'version'")

您能给我们看一下您的json吗?这表明键“version”不存在于一行中。如果您不关心是否有缺少版本的行,可以使用get函数来防止错误:row.get('version')输入JSON是什么?看起来你在
返回的数据['devices']
中有一条记录,它没有key
version
。脚本打印所有的“version”-s,最后失败了,我检查了所有json-s数组都有“version”后,你能发布json吗?如果需要,只需检查敏感数据。您可以向我们显示您的json吗?这表示密钥“version”不存在于一行中。如果您不关心是否有缺少版本的行,可以使用get函数来防止错误:row.get('version')输入JSON是什么?看起来你在
返回的数据['devices']
中有一条记录,它没有key
version
。脚本打印所有的“version”-s,最后失败了,我检查了所有json-s数组都有“version”后,你能发布json吗?只要审查敏感数据,如果你需要。谢谢,我有错误处理,但特别是不检查版本是否存在。在json for/each运行时出现了一些脏数据。谢谢,我有错误处理,但特别是不检查版本是否存在。在json for/each运行时出现一些脏数据。