如何修复“JSONDecodeError:无法解码 JSON 对象:第 1 行第 0 列(字符 0)”?
Posted
技术标签:
【中文标题】如何修复“JSONDecodeError:无法解码 JSON 对象:第 1 行第 0 列(字符 0)”?【英文标题】:How do I fix a "JSONDecodeError: No JSON object could be decoded: line 1 column 0 (char 0)"? 【发布时间】:2011-03-23 07:21:27 【问题描述】:我正在尝试使用 Python 获取给定主题标签的 Twitter API 搜索结果,但我遇到了“无法解码 JSON 对象”错误。我必须在 URL 末尾添加额外的 % 以防止出现字符串格式错误。这个 JSON 错误是否与额外的 % 有关,还是由其他原因引起的?任何建议将不胜感激。
一个sn-p:
import simplejson
import urllib2
def search_twitter(quoted_search_term):
url = "http://search.twitter.com/search.json?callback=twitterSearch&q=%%23%s" % quoted_search_term
f = urllib2.urlopen(url)
json = simplejson.load(f)
return json
【问题讨论】:
响应的实际内容是什么?使用您的代码,您可以通过content = f.read()
之类的内容找到它。
我使用了您的代码并尝试打印内容,但得到了同样的错误:JSONDecodeError: No JSON object could be decoded: line 1 column 0 (char 0) function pull_tweets in twitter_puller_1.py at line 28 data1 = search_twitter(query1) function search_twitter in twitter_puller_1.py at line 14 json = simplejson.load(f) function load in untitled at line 328 None function load in untitled at line 384 None function decode in untitled at line 402 obj, end = self. raw_decode(s, idx=_w(s, 0).end()) function raw_decode in untitled at line 420 raise JSONDecodeError("No JSON object could be decoded", s, idx)
见 blcArmadillo 的回答。您需要从您对 Twitter 的请求中删除 callback
参数。像url = "http://search.twitter.com/search.json?q=%s" % quoted_search_term
这样的东西应该可以工作。
【参考方案1】:
您的初始代码存在一些问题。首先,您从未阅读过 twitter 的内容,只是打开了 url。在您设置回调(twitterSearch)的 url 中的第二个。回调所做的是将返回的 json 包装在函数调用中,因此在这种情况下,它应该是 twitterSearch()。如果您想要一个特殊的函数来处理返回的结果,这很有用。
import simplejson
import urllib2
def search_twitter(quoted_search_term):
url = "http://search.twitter.com/search.json?&q=%%23%s" % quoted_search_term
f = urllib2.urlopen(url)
content = f.read()
json = simplejson.loads(content)
return json
【讨论】:
你说对了一半。实际的问题是callback
参数,它导致 Twitter 返回 JSONP
,它不能直接解析为 JSON. But the code for reading the JSON was fine (it just passed the file-like object
f` 到 simplejson.load()
函数,它接受类似文件的对象)。跨度>
非常感谢您向我解释这一点,blcArmadillo 和 Will McCutchen!它现在可以工作了:)以上是关于如何修复“JSONDecodeError:无法解码 JSON 对象:第 1 行第 0 列(字符 0)”?的主要内容,如果未能解决你的问题,请参考以下文章