Python不解码json

时间:2014-01-01 16:03:00

标签: python json jsonp

我收到错误:

No JSON object could be decoded: line 1 column 0 (char 0)

尝试解析从xbox music api返回的json对象时。

这是我的代码:

conn = httplib.HTTPSConnection(SERVICE_API)
conn.request("GET", url)
response = conn.getresponse()
data = response.read()
j = json.loads(data)

最后一行是返回上述错误的内容。如果我评论出来并打印出'data',我可以看到json对象。如果我将其复制/过去jsonlint.com以查看它是否有效,它会说它是。我会在这里发布,但它是800行。

1 个答案:

答案 0 :(得分:0)

您正在访问包含UTF-8 BOM的Microsoft服务。但微软非常喜欢UTF-8中的BOM(这里完全是多余的),因为它将BOM引入UTF-8,使记事本和其他Windows应用程序更容易自动检测所使用的编码。

愚蠢的微软,根据JSON RFC,它非常无效;如果在任何地方都有联系地址,您应该将其作为错误报告给他们。

您可以使用以下方式剥离BOM:

import codecs

data = response.read()
if data.startswith(codecs.BOM_UTF8):
    data = data[3:]