亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

JSONDecodeError:預期值:第1行第1列(字符0)

JSONDecodeError:預期值:第1行第1列(字符0)

阿晨1998 2019-11-25 15:38:03
Expecting value: line 1 column 1 (char 0)嘗試解碼JSON 時出現錯誤。我用于API調用的URL在瀏覽器中可以正常工作,但是通過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)
查看完整描述

3 回答

?
胡子哥哥

TA貢獻1825條經驗 獲得超6個贊

總結評論中的對話:


無需使用simplejson庫,Python作為json模塊包含了相同的庫。


無需解碼從UTF8到unicode的響應,simplejson/ json .loads()方法可以本地處理UTF8編碼的數據。


pycurl有一個非常古老的API。除非您有特定的使用要求,否則會有更好的選擇。


requests提供最友好的API,包括JSON支持。如果可以,將您的通話替換為:


import requests


return requests.get(url).json()


查看完整回答
反對 回復 2019-11-25
?
繁華開滿天機

TA貢獻1816條經驗 獲得超4個贊

檢查響應數據主體,是否存在實際數據并且數據轉儲的格式是否正確。


在大多數情況下,您的json.loads- JSONDecodeError: Expecting value: line 1 column 1 (char 0)錯誤是由于:


非JSON引用

XML / HTML輸出(即以<開頭的字符串),或

不兼容的字符編碼

最終,錯誤告訴您字符串在第一位置已經不符合JSON。


因此,如果盡管乍一看具有看起來像JSON的數據主體,但解析仍然失敗,請嘗試替換數據主體的引號:


import sys, json

struct = {}

try:

  try: #try parsing to dict

    dataform = str(response_json).strip("'<>() ").replace('\'', '\"')

    struct = json.loads(dataform)

  except:

    print repr(resonse_json)

    print sys.exc_info()

注意:數據中的引號必須正確轉義


查看完整回答
反對 回復 2019-11-25
  • 3 回答
  • 0 關注
  • 1997 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號