我是Python新手。我試圖解析url的json結果。本來,我用的是以下幾點:在解碼url中的json結果之後接收「KeyError」
response = urllib.request.urlopen(url)
json_obj = json.load(response)
這給了一個錯誤的線沿線的「JSON對象應該是‘海峽’而不是‘字節’」,因此,在計算器搜索後,我解碼的迴應如下:
f = urllib.request.urlopen(url)
charset = f.info().get_param('charset', 'utf8')
data = f.read()
decoded = json.loads(data.decode(charset))
如果我打印的「解碼」的情況如下:
{'Links': {'SummaryData': 'https://localhost/piwebapi/streams/P0_7qHaW4UHU-RlCaz8tpasAAQAAAAU0hJTExNQU42NDIwXFNJTlVTT0lE/summary', 'Value': 'https://localhost/piwebapi/streams/P0_7qHaW4UHU-RlCaz8tpasAAQAAAAU0hJTExNQU42NDIwXFNJTlVTT0lE/value', 'InterpolatedData': 'https://localhost/piwebapi/streams/P0_7qHaW4UHU-RlCaz8tpasAAQAAAAU0hJTExNQU42NDIwXFNJTlVTT0lE/interpolated', 'Self': 'https://localhost/piwebapi/points/P0_7qHaW4UHU-RlCaz8tpasAAQAAAAU0hJTExNQU42NDIwXFNJTlVTT0lE', 'PlotData': 'https://localhost/piwebapi/streams/P0_7qHaW4UHU-RlCaz8tpasAAQAAAAU0hJTExNQU42NDIwXFNJTlVTT0lE/plot', 'DataServer': 'https://localhost/piwebapi/dataservers/s0_7qHaW4UHU-RlCaz8tpasAU0hJTExNQU42NDIw', 'RecordedData': 'https://localhost/piwebapi/streams/P0_7qHaW4UHU-RlCaz8tpasAAQAAAAU0hJTExNQU42NDIwXFNJTlVTT0lE/recorded'}, 'Id': 1, 'Name': 'SINUSOID', 'WebId': 'P0_7qHaW4UHU-RlCaz8tpasAAQAAAAU0hJTExNQU42NDIwXFNJTlVTT0lE'}
現在,每當我試圖拉出一個特定的值,我得到一個「KeyError異常」。例如:
print(decoded[0])
返回如下:
Traceback (most recent call last):
File "C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\Extensio
ns\Microsoft\Python Tools for Visual Studio\2.1\visualstudio_py_util.py", line 1
06, in exec_file
exec_code(code, file, global_variables)
File "C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\Extensio
ns\Microsoft\Python Tools for Visual Studio\2.1\visualstudio_py_util.py", line 8
2, in exec_code
exec(code_obj, global_variables)
File "C:\Users\shillman\Documents\Visual Studio 2010\Projects\PythonApplicatio
n1\PythonApplication1\PythonApplication1.py", line 26, in <module>
print(decoded[0])
KeyError: 0
什麼格式在 「解碼」?有沒有一種方法可以做到這一點,它實際上是一本字典?有沒有辦法將它轉換成字典?任何幫助/建議非常感謝!謝謝。
感謝您的答覆,訪問這些鏈接。當我使用實際的關鍵之一,說: 打印(解碼[「WebID」] 我仍然得到「KeyError異常‘WebID’」 那是沒有辦法的辦法來引用關鍵 – JOEMan90 2014-10-10 18:56:33
啊,這是區分大小寫? 。我現在不知道,現在開始工作,謝謝! – JOEMan90 2014-10-10 19:06:09
@ JOEMan90:寫一個不區分大小寫的dict子類並不難,如果你願意,掛鉤'json'模塊來返回它們而不是普通的dict值。但是JSON本身是區分大小寫的,所以根據你的輸入數據這可能會變得非常混亂,並且可能不是一個好主意。 – abarnert 2014-10-10 19:14:43