如何在Python中操作json文件

时间:2016-05-14 19:51:06

标签: python json

我想从这里提取数据: http://www.carqueryapi.com/api/0.3/?callback=?&cmd=getMakes

到目前为止,这是我的python脚本:

import urllib.request
import json
url =("http://www.carqueryapi.com/api/0.3/?callback=?&cmd=getMakes")
request = urllib.request.Request(url)
response = urllib.request.urlopen(request)
result = response.read().decode('utf-8')
print (result)

当我试图操纵结果时,从:

开始
d = json.loads(result)

我收到一条错误消息:“ValueError:无法解码JSON对象”

我做错了什么?

2 个答案:

答案 0 :(得分:2)

您的网址/查询错误;您没有从服务器获得有效的JSON回复;它是这样开始的:

?({"Makes":[{"make_id":"abarth","make_display":"Abarth","make_is_common":"0","make_country":"Italy"},

如果您修改这样的网址:

url = ("http://www.carqueryapi.com/api/0.3/?cmd=getMakes")

它应该有用。至少它在那之后对我有用。

显然,callback=?意味着客户端可以插入一个传递json的回调方法。即你可以让服务器生成可执行的javascript,而不仅仅是json。

答案 1 :(得分:0)

如果我点击你的网址,正文中的第一个字符是“?(”。这会破坏你将其提供给JSON的尝试。你需要预先处理数据以去除垃圾。还有垃圾最后。

顺便说一句,使用Python请求库而不是urllib来节省头痛!