Я делаю запрос через класс 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
< /blockquote>
Код: Выделить всё
type(a)
Я пытаюсь получить ответ как список словарей:
Код: Выделить всё
data_list = response.json()
Код: Выделить всё
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
Мобильная версия