Я отримую помилку Expecting value: line 1 column 1 (char 0)при спробі розшифрувати JSON.
URL-адреса, яку я використовую для виклику API, працює добре у веб-переглядачі, але видає цю помилку, коли робиться через запит на згортання. Далі наведено код, який я використовую для запиту 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()?