Ошибка json.decoder.JSONDecodeError: Ожидаемое значение: строка 1, столбец 1 (символ 0) в json.loads() [закрыто]Python

Программы на Python
Ответить
Anonymous
 Ошибка json.decoder.JSONDecodeError: Ожидаемое значение: строка 1, столбец 1 (символ 0) в json.loads() [закрыто]

Сообщение Anonymous »

Проблема в следующем:
Я делаю запрос через класс requests, вот так:

Код: Выделить всё

payload = {"offset":0,"limit":10}
headers = {'content-type': 'application/json','Accept': 'application/json'}
response = requests.post(url, data=json.dumps(payload), headers=headers)
Я получаю успешный ответ в ожидаемой форме:

Код: Выделить всё

result = response.content
b'[{"id":12467458,"key":"119b21eabde78592944ef768", ...}]
< /blockquote>

Код: Выделить всё

type(a)


Я пытаюсь получить ответ как список словарей:

Код: Выделить всё

data_list = response.json()
[{'id': 12467458, 'key': '119b21eabde78592944ef768', ...}]

Код: Выделить всё

type(data_list)


И до этого момента все отлично. Проблема в том, что, хотя я, очевидно, получаю нужный мне список, код выдает следующую ошибку:

json.decoder.JSONDecodeError: Ожидаемое значение: строка 1 столбец 1 (char
0)

Если я остановлю код, чтобы отобразить содержимое рассматриваемой переменной, он не выдаст никаких ошибка, хотя «печать» находится на несколько строк ниже строки, в которой начинается ошибка. Однако, если я позволю коду работать, он сбрасывает ошибку и останавливает код.
Я пробовал другой способ, но он тоже не удался:

Код: Выделить всё

data = response.content
string_list = data.decode('utf-8','ignore')
data_list = json.loads(string_list) # Fails here with the same error
Я также пробовал другие вещи, такие как:
  • фильтрация данных (после того, как я преобразовал их в список) и сбрасываем
    его в другую переменную, а затем удаляем «проблемную» переменную.
  • создаем текстовый файл, сбрасываем ответ, полученный в запросе, и
    затем открываем файл еще раз и работаю с данными.
Я продолжаю получать ту же ошибку.
Помимо самой ошибки , есть одна вещь, которую я не понимаю: я могу работать с данными (как только я получил их в виде списка), но получаю ошибку в 'json.loads()' или 'response.json( )', то есть строки выше в коде.
Буду благодарен за любую помощь.

Обновление:
Мой код выглядит следующим образом:

Код: Выделить всё

payload = {"offset":0,"limit":10}
headers = {'content-type': 'application/json','Accept': 'application/json'}
response = requests.post(url, data=json.dumps(payload), headers=headers)

result = response.json()

data_info = [{key: value for key, value in d.items() if key != 'description'} for d in result]
filtered_data = [d for d in data_info if d['likes'] > 10]

for data in filtered_data:
print(data)
А это вывод командной строки:

{'id': 211680968, 'key': '7c0fb063d19ef1acf70345ae70ea'} {'id':
176285872, 'key': '92b78052420c71b4a50507fa09eb'} {'id': 83634583,
'key': 'ba3383821683f2933eebb5d 5'} {'id': 176517962, ' key':
'a7f0ad8f1c26370470a7a52f25fe'


Traceback (последний вызов):Файл
"C:\Users\cooper\AppData\Local\Programs\Python\Python310\lib\site-packages\requests\models.py",
строка 974, в json
return complexjson.loads(self.text, **kwargs) Файл "C:\Users\cooper\AppData\Local\Programs\Python\Python310\lib\json_init_. py",
строка 346, при загрузке
возврат _default_decoder.decode(s) Файл "C:\Users\cooper\AppData\Local\Programs\Python\Python310\lib\json\decoder.py" ,
строка 337, в decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end()) Файл "C:\Users\cooper\AppData\Local\ Programs\Python\Python310\lib\json\decoder.py",
строка 355, в raw_decode
вызовите JSONDecodeError("Ожидаемое значение", s, err.value) из None json.decoder.JSONDecodeError: Ожидаемое значение: строка 1, столбец 1 (char
0)


Во время обработки вышеуказанного исключения возникло другое исключение. произошло:
Traceback (последний вызов — последний): File
"C:\Users\cooper\AppData\Local\Programs\Python\Python310\get_posts.py",строка 93, в
result = response.json()
файл "C:\Users\cooper\AppData\Local\Programs\Python\Python310\lib\site-packages\requests\models .py",
строка 978 в json
raise RequestsJSONDecodeError(e.msg, e.doc, e.pos)
requests.Exceptions.JSONDecodeError: Ожидается значение: строка 1, столбец 1
(char 0)


Подробнее здесь: https://stackoverflow.com/questions/790 ... -char-0-on
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»