2017-07-24 102 views
0

我有簡單的JSON,因爲我正在閱讀裏面的值。Python閱讀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' 

爲什麼?

+1

你能告訴我們你的JSON? –

+0

這表示鍵「版本」不存在於一行中。如果你不在乎是否有缺少版本的行,你可以使用get函數來防止錯誤:row.get('version') – Igle

+0

什麼是輸入JSON?看起來你在'returned_data ['devices']'裏面有一個沒有'version'鍵的記錄。 – Qeek

回答

2

如果您需要每行都包含密鑰version,那麼您的字典中有一個錯誤,因爲該異常指示存在一行,該行缺少該密鑰。

在這種情況下,你必須檢查爲什麼你的字典是錯誤的。

否則,如果只有部分行包含version,你並不需要每一行有這個鍵,您可以通過使用.get()功能這樣避開錯誤:

for row in returned_data['devices']: 
    print (row.get('version')) 

此打印版本,每個行都包含密鑰,沒有version

你可以做的另一件事是使用try...except...

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

謝謝,我有錯誤處理,但尤其是不檢查版本是否存在。 –