我有一個使用Falcon框架在Python 3.4中編寫的Web服務。一個特定的方法接受一個json值的文章。我的代碼:Python json.loads()無法解析json字符串
try:
raw_json = req.stream.read()
except Exception as ex:
raise falcon.HTTPError(falcon.HTTP_400, 'Error', ex.message)
try:
result_json = json.loads(raw_json.decode('utf-8'))
except ValueError:
raise falcon.HTTPError(falcon.HTTP_400,
'Malformed JSON', 'Could not decode the request body. The JSON was incorrect.')
clientIp = result_json['c']
wpIp = result_json['w']
lan = result_json['l']
table = int(result_json['t'])
此代碼是工作的罰款8個月前,但目前引發錯誤:「列表索引必須是整數或片,不海峽。」我認爲Python或Falcon軟件包更新後可能會崩潰。 raw_json.decode('utf-8')的輸出看起來不錯,返回[{「w」:「10.191.0.2」,「c」:「10.191.0.3」,「l」:「255.255。 255.0「,」t「:」4「}]。我認爲json.loads()是我的問題的根源。 len(result_json)返回1,我期望4.是否有一個額外的參數需要json.loads()來幫助它正確解析?或者我完全錯過了其他的東西?
謝謝, 格雷格(Python的小白)
該訣竅。謝謝。我覺得這很簡單。 –
這也可能意味着在某些情況下有多個結果,所以您可能需要遍歷'result_json'並從每個'dict'中獲取''c''的值。如果您只是在索引0處編制索引,則不會知道是否遺漏了其他可能重要的數據。 – ShadowRanger
好點,雖然我控制傳入的請求,所以我知道它只是一個單一的項目。 –