我试图解码,然后解析一个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