在Python中加载JSON文件时抛出错误。

在Python中加载JSON文件时抛出错误。,python,json,Python,Json,我正在从url获取API,如:http://api.example.com/search/foo/bar 使用这个简单的代码 import json url = "http://api.example.com/search/foo/bar" result = json.loads(url) # result is now a dict print result['name'] 但是,我得到了这个错误 Traceback (most recent call last): File "ind

我正在从url获取API,如:
http://api.example.com/search/foo/bar

使用这个简单的代码

import json
url = "http://api.example.com/search/foo/bar"
result = json.loads(url)  # result is now a dict
print result['name']
但是,我得到了这个错误

Traceback (most recent call last):
  File "index.py", line 6, in <module>
    result = json.loads(url);
  File "/usr/lib64/python2.7/json/__init__.py", line 338, in loads
    return _default_decoder.decode(s)
  File "/usr/lib64/python2.7/json/decoder.py", line 365, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/usr/lib64/python2.7/json/decoder.py", line 383, in raw_decode
    raise ValueError("No JSON object could be decoded")
ValueError: No JSON object could be decoded
回溯(最近一次呼叫最后一次):
文件“index.py”,第6行,在
result=json.loads(url);
文件“/usr/lib64/python2.7/json/_init__.py”,第338行,加载
返回\u默认\u解码器。解码
文件“/usr/lib64/python2.7/json/decoder.py”,第365行,在decode中
obj,end=self.raw\u decode(s,idx=\u w(s,0.end())
原始解码中的文件“/usr/lib64/python2.7/json/decoder.py”,第383行
raise VALUERROR(“无法解码JSON对象”)
ValueError:无法解码任何JSON对象

您需要先从url读取数据。
json.loads()
从字符串加载json。但该字符串本质上只是字符串形式的json结构。您需要通过读取url请求中的数据来获取json字符串,该url请求应该是json字符串

例如,类似这样的事情:

import json
import urllib2
url = "http://api.example.com/search/foo/bar"
response = urllib2.urlopen(url)
json_string = response.read()
json\u string
现在包含您搜索的json,假设api调用正确返回它

json_dict = json.loads(json_string)
您应该能够使用
json\u dict['name']
等访问json中的项目

json.loads()
从字符串加载json,这就是上面所做的(以及我使用
read()
获取字符串的原因)
json.load()
从json对象加载。如果api返回的是您在注释中提到的纯json格式,您可以尝试以下方法:

response = urllib2.urlopen(url)
json_dict = json.load(response)

您需要首先从url读取数据。
json.loads()
从字符串加载json。但该字符串本质上只是字符串形式的json结构。您需要通过读取url请求中的数据来获取json字符串,该url请求应该是json字符串

例如,类似这样的事情:

import json
import urllib2
url = "http://api.example.com/search/foo/bar"
response = urllib2.urlopen(url)
json_string = response.read()
json\u string
现在包含您搜索的json,假设api调用正确返回它

json_dict = json.loads(json_string)
您应该能够使用
json\u dict['name']
等访问json中的项目

json.loads()
从字符串加载json,这就是上面所做的(以及我使用
read()
获取字符串的原因)
json.load()
从json对象加载。如果api返回的是您在注释中提到的纯json格式,您可以尝试以下方法:

response = urllib2.urlopen(url)
json_dict = json.load(response)

”http://api.example.com/search/foo/bar“
是一个字符串,您想下载该页面吗?@KevinGuan不,一点也不想。这是一个JSON响应,不是字符串。@arbi-g11324115 URL是字符串。您必须先下载页面才能获取其json内容。凯文就是这么告诉你的。他是对的。
”http://api.example.com/search/foo/bar“
是一个字符串,您想下载该页面吗?@KevinGuan不,一点也不想。这是一个JSON响应,不是字符串。@arbi-g11324115 URL是字符串。您必须先下载页面才能获取其json内容。凯文就是这么告诉你的。他是对的,谢谢你的回答。我是新来的,大部分我都不懂。为什么需要
urllib2
库?返回的数据是纯JSON格式的,因此我无法理解为什么需要
urlib2
urlib2.urlopen(url)
甚至
html.read
,这就是我问的原因。urlib2.urlopen(url)在传递给它的url上返回类似文件的对象。在本例中,需要对该对象调用read(),才能将该文件对象数据作为字符串分配到变量中。至于到底为什么要这样做,我不完全确定。在任何情况下,请参见我的编辑。对不起,我不能解释更多的原因:汉克斯。实际上,我正在轮询结果并尝试将它们导出到XML。不管怎么说,是否可以将整个JSON转储为XML?刚刚遇到了这个问题,非常感谢您的回答。我是新来的,大部分我都不懂。为什么需要
urllib2
库?返回的数据是纯JSON格式的,因此我无法理解为什么需要
urlib2
urlib2.urlopen(url)
甚至
html.read
,这就是我问的原因。urlib2.urlopen(url)在传递给它的url上返回类似文件的对象。在本例中,需要对该对象调用read(),才能将该文件对象数据作为字符串分配到变量中。至于到底为什么要这样做,我不完全确定。在任何情况下,请参见我的编辑。对不起,我不能解释更多的原因:汉克斯。实际上,我正在轮询结果并尝试将它们导出到XML。不管怎样,有没有把整个JSON转储成XML的方法?只是遇到了这个和这个