如何修复“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)”?的主要内容,如果未能解决你的问题,请参考以下文章

如何修复drv?

如何修复漏洞

如何修复WMI

PHP网站漏洞怎么修复 如何修补网站程序代码漏洞

如何修复这些漏洞? (npm audit fix 无法修复这些漏洞)

如何修复AppScan漏洞