Я получаю сообщение об ошибке Expecting value: line 1 column 1 (char 0)при попытке декодирования JSON.
URL, который я использую для вызова API, прекрасно работает в браузере, но выдает эту ошибку при выполнении запроса curl. Ниже приведен код, который я использую для запроса curl.
Ошибка происходит в return simplejson.loads(response_json)
response_json = self.web_fetch(url)
response_json = response_json.decode('utf-8')
return json.loads(response_json)
def web_fetch(self, url):
buffer = StringIO()
curl = pycurl.Curl()
curl.setopt(curl.URL, url)
curl.setopt(curl.TIMEOUT, self.timeout)
curl.setopt(curl.WRITEFUNCTION, buffer.write)
curl.perform()
curl.close()
response = buffer.getvalue().strip()
return response
Полная трассировка:
Выслеживать:
File "/Users/nab/Desktop/myenv2/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response
111. response = callback(request, *callback_args, **callback_kwargs)
File "/Users/nab/Desktop/pricestore/pricemodels/views.py" in view_category
620. apicall=api.API().search_parts(category_id= str(categoryofpart.api_id), manufacturer = manufacturer, filter = filters, start=(catpage-1)*20, limit=20, sort_by='[["mpn","asc"]]')
File "/Users/nab/Desktop/pricestore/pricemodels/api.py" in search_parts
176. return simplejson.loads(response_json)
File "/Users/nab/Desktop/myenv2/lib/python2.7/site-packages/simplejson/__init__.py" in loads
455. return _default_decoder.decode(s)
File "/Users/nab/Desktop/myenv2/lib/python2.7/site-packages/simplejson/decoder.py" in decode
374. obj, end = self.raw_decode(s)
File "/Users/nab/Desktop/myenv2/lib/python2.7/site-packages/simplejson/decoder.py" in raw_decode
393. return self.scan_once(s, idx=_w(s, idx).end())
Exception Type: JSONDecodeError at /pricemodels/2/dir/
Exception Value: Expecting value: line 1 column 1 (char 0)
simplejsonкогда вы можете просто использовать stdlib json(который является той же библиотекой, что иsimplejson )?
web_fetch() звонок не удался.
pycurl. requestsпредлагает гораздо более простой API, особенно когда дело доходит до отладки происходящего. Если вам не требуется более новая версия simplejsonбиблиотеки, просто придерживайтесь ее json, сохраняя зависимость от управления.
response_jsonвозвращаемое значение .json()? Тогда у вас уже есть декодированные данные, и вам больше не нужно их использовать json.loads(). responseрасшифровал это для вас.
print repr(response_json)говорит вам , что вас передают.loads()?