【问题标题】:How do I fix a "JSONDecodeError: No JSON object could be decoded: line 1 column 0 (char 0)"?如何修复“JSONDecodeError:无法解码 JSON 对象:第 1 行第 0 列(字符 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 这样的东西应该可以工作。

标签: python json twitter simplejson


【解决方案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!它现在可以工作了:)
猜你喜欢
  • 2021-09-20
  • 2013-05-10
  • 2019-02-25
  • 1970-01-01
  • 1970-01-01
  • 2018-06-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多