为什么我得到这个JSONDecodeError?

时间:2014-10-11 19:06:56

标签: python json

我使用下面的代码向网站提交XHR请求,并返回嵌套列表,我想要的数据包含在内:

import requests

url = 'http://www.whoscored.com/stagestatfeed/9155/stageteams/'
url = str(''.join(url[0:3]))
params = {
            'against': '0',            
            'field': '0',
            'teamId': '-1',
            'type': '8'
            }

headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36',
           'X-Requested-With': 'XMLHttpRequest',
           'Host': 'www.whoscored.com',
           'Referer': 'http://www.whoscored.com/'}

responser = requests.get(url, params=params, headers=headers)

responser = responser.json()
print responser

但是,我收到以下错误消息:

simplejson.scanner.JSONDecodeError: Expecting value: line 1 column 7 (char 6)

返回的项目似乎是JSON,所以我不确定为什么会收到此错误。

任何人都可以提供帮助吗?

由于

1 个答案:

答案 0 :(得分:2)

使用JSONLint验证它确实是JSON,因为它可能不是。 JSONlint将告诉您错误的确切位置。我在线下面应用了这个“分析”(如果你想从这里自己找到解决方案,请不要再读了):


返回的JSON无效,因为它对字符串使用单引号。 JSON只允许双引号:

JSON string

'代替所有"

import requests
import json

url = 'http://www.whoscored.com/stagestatfeed/9155/stageteams/'
#url = str(''.join(url[0:3]))
params = {
            'against': '0',            
            'field': '0',
            'teamId': '-1',
            'type': '8'
            }

headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36',
           'X-Requested-With': 'XMLHttpRequest',
           'Host': 'www.whoscored.com',
           'Referer': 'http://www.whoscored.com/'}

responser = requests.get(url, params=params, headers=headers)

print json.loads(responser.text.replace("'", '"'))