Python JSON декодирует часть файла - PullRequest
0 голосов
/ 31 января 2012

Я пытаюсь декодировать, а затем проанализировать файл JSON, это около 9 МБ.Но когда я пытаюсь декодировать файл json, чтобы превратить его в объект словаря Python, я получаю сообщение об ошибке:

Кодек utf8 не может декодировать байты в позиции 3161744-3161747: недопустимые данные

Я думаю, это может быть связано с проблемами кодирования / декодирования, но я не совсем уверен.Я не знаю, что файл кодирует, потому что я получаю его от третьей стороны, и, к сожалению, я не могу показать файл, потому что он содержит конфиденциальную информацию.

Кроме того, люди, которые предоставилиФайл 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()

1 Ответ

1 голос
/ 31 января 2012

Я не думаю, что вам следует декодировать utf-8 перед его чтением. Json должен быть прозрачен для кодировки, поскольку у вас могут быть некоторые строки в json, которые являются utf-8, и другие, которые являются латинскими-9и т. д. Попробуйте:

json.load(open(self.json_file))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...