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

时间:2015-09-26 23:55:41

标签: python json

我从网址中获取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

1 个答案:

答案 0 :(得分:5)

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

例如,像这样:

import json
import urllib2
url = "http://api.example.com/search/foo/bar"
response = urllib2.urlopen(url)
json_string = response.read()

json_string现在包含你寻找的json,假设api调用正确地返回它。

json_dict = json.loads(json_string)

您应该可以使用json_dict['name']等访问json中的项目。

json.loads()从字符串加载json,这是上面所做的(以及我使用read()获取字符串的原因)。 {j}对象加载json.load()。如果api返回的是你在评论中提到的纯json格式,你可以试试这个:

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