raise JSONDecodeError("Expecting value", s, err.value)
При вызове json.loads() получаю ошибку
raise JSONDecodeError("Expecting value", s, err.value) from None json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
структура json файла:
{
"db": [
{
"message_id": 1156
},
{
"message_id": 1155
},
{
"message_id": 1154
}
]
}
функция:
def cout():
for i in json.loads("hist.json"):
print(i)
cout()
Какие могут быть решения? Заранее спасибо.
Ответы (1 шт):
Автор решения: mrEvgenX
→ Ссылка
Судя по документации:
loads - принимает json в виде строки. Код ругается, что "hist.json" - это не json и ему не понять, что это.
load - загружает из файлового объекта. В конкретном случае надо так:
import json
def cout():
with open('hist.json', 'r') as hist:
for i in json.load(hist):
print(i)
cout()
А еще JSON-формат ругается на лишние запятые. и поэтому в файле надо удалить последнюю запятую у последнего элемента списка.
PS: А loads используется так:
import json
def cout():
for i in json.loads("""
{
"db": [
{
"message_id": 1156
},
{
"message_id": 1155
},
{
"message_id": 1154
}
]
}
"""):
print(i)
cout()