Попытка создать файл json, но при его чтении возникает ошибка JSONDecodeError(«Дополнительные данные», s, конец)

#python #json

Вопрос:

решенный

Я пытаюсь загрузить файл json на python с помощью:

 json_file = open('bill_history.json', "r ")
bill_history = json.load(json_file)
 

Однако меня встречают со следующим исключением:

 raise JSONDecodeError("Extra data", s, end)
json.decoder.JSONDecodeError: Extra data: line 1 column 13 (char 12)
 

Я читал, что json.load в строке может быть прочитан только один объект json, и это исключение возникает, когда в строке более одного объекта json. Я не верю, что в моей строке есть более одного объекта json. Я в замешательстве, может быть, это как-то связано с тем, как я вкладываю словари? Я неправильно отформатировал свой файл json?

bill_history.json:

 {
    "months": [
        {
            "month": "September",
            "is_paid": "False",
            "utilities": [
                {
                    "utility": "electricity",
                    "is_paid": "False",
                    "bill": "-1",
                    "paid": "0",
                    "resident_payments": [
                        {
                            "resident": "A",
                            "has_paid": "False",
                            "cost": -1,
                            "paid": 0
                        },
                        {
                            "resident": "B",
                            "has_paid": "False",
                            "cost": -1,
                            "paid": 0
                        },
                        {
                            "resident": "C",
                            "has_paid": "False",
                            "cost": -1,
                            "paid": 0
                        },
                        {
                            "resident": "D",
                            "has_paid": "False",
                            "cost": -1,
                            "paid": 0
                        },
                        {
                            "resident": "E",
                            "has_paid": "False",
                            "cost": -1,
                            "paid": 0
                        },
                        {
                            "resident": "F",
                            "has_paid": "False",
                            "cost": -1,
                            "paid": 0
                        }
                    ]
                }
            ]
        }
    ]
}
 

исправить:

использовать json.loads :

 json_file = open('bill_history.json', "r ")
json_string = json_file.read()
bill_history = json.loads(json_string)
 

Комментарии:

1. Я пробовал то же самое, и это работает для меня ! Я сомневаюсь, что при сохранении вы вставили в файл дополнительные символы. Пожалуйста, проверьте. Кроме того, моя версия python-3.9.1

2. @anand спасибо за ответ. Я дважды проверил, что нигде не добавил никаких символов, и сообщение выше соответствует моему текущему файлу. По-прежнему возникает та же ошибка. Я попробую обновить свою версию python и свяжусь с вами, если это сработает или нет.

3. Обновление до версии 3.9.6 не решило проблему.

4. Ваш json в порядке, и вы всегда можете проверить свою структуру json здесь — jsonlint.com

5. @softsun2 Я не могу воспроизвести проблему с json, который вы опубликовали. import json with open('bill_history.json') as f: data = json.load(f) просто работает…