#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)
просто работает…