我試圖解碼,然後解析一個JSON文件大約9MB。 但是當我嘗試解碼JSON文件,使之成爲一個Python字典對象我得到的錯誤:Python JSON解碼部分文件
'utf8' codec can't decode bytes in position 3161744-3161747: invalid data
我認爲這可能是由於編碼/解碼的問題,但我不能完全肯定。我不知道什麼文件正在編碼,因爲我從第三方獲取它,但不幸的是我無法顯示該文件,因爲它包含敏感信息。
另外,提供JSON文件的人表示這是一個有效的JSON文件並且傳遞了json lint。 這裏是我下面的代碼:
import json
""" JSON Parser """
class parser:
json_file = None
""" The JSON File name"""
def json_object(self, file):
self.json_file = file
""" Open up file and parse it """
def json_encode(self):
try:
json_data = open(self.json_file)
data = json_data.read().decode('utf8')
result = json.loads(data)
except Exception as e:
result = e
return result
""" Instantiate parser and begin parsing the file"""
p = parser()
p.json_object('file.js')
print p.json_encode()
儘管文件可以適當從一個JSON點被格式化,它仍可以是從一個UTF-8編碼點無效。您應該能夠通過將文件讀取爲UTF-8文本文件來引發相同的錯誤,這將消除JSON的問題。你確定該文件是UTF-8編碼,而不是像ISO 8859-1? – 2012-01-30 21:07:34
@GregHewgill我不確定,這是問題所在,我可以在文本編輯器中以UTF-8編碼格式打開它,然後保存它。然後當我運行解析器時,我只能得到編碼的json文件的最後部分。當我嘗試在PHP中發生同樣的問題。這是一個非常奇怪的問題,但是,我仍然認爲它首先與文件的編碼方式有關。 – Vlad 2012-01-30 21:27:25
你可以讀取文件,然後嘗試'數據[3161730:3161760]'看看是什麼導致了錯誤? – 2012-01-30 21:57:21