Saya mendapatkan kesalahan Expecting value: line 1 column 1 (char 0)
saat mencoba men-decode JSON.
URL yang saya gunakan untuk panggilan API berfungsi dengan baik di browser, tetapi memberikan kesalahan ini ketika dilakukan melalui permintaan ikal. Berikut ini adalah kode yang saya gunakan untuk permintaan ikal.
Kesalahan terjadi pada 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
Traceback Penuh:
Melacak kembali:
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
ketika Anda bisa menggunakan stdlib json
(yang merupakan pustaka yang samasimplejson
)?
web_fetch()
Panggilan Anda gagal.
pycurl
. requests
menawarkan API yang jauh lebih mudah, terutama untuk debugging apa yang sedang terjadi. Kecuali Anda secara khusus harus memiliki versi simplejson
perpustakaan yang lebih baru, tetap saja json
, menghemat ketergantungan Anda untuk mengelola.
response_json
nilai pengembalian .json()
? Maka Anda sudah memiliki data yang diterjemahkan dan tidak perlu digunakan json.loads()
lagi. response
menerjemahkannya untukmu.
print repr(response_json)
memberitahu Anda sedang diteruskan.loads()
?