用Python解码JSON

时间:2013-04-15 15:14:20

标签: python json python-3.x

为什么我

  

ValueError:无法解码JSON对象

来自此代码:

import urllib.request,json 

n = urllib.request.urlopen("http://graph.facebook.com/55")
d = json.loads(str(n.readall()))

完整错误:

Traceback (most recent call last):
  File "<pyshell#41>", line 1, in <module>
    d= json.loads(str(n.readall()))
  File "C:\Python33\lib\json\__init__.py", line 309, in loads
    return _default_decoder.decode(s)
  File "C:\Python33\lib\json\decoder.py", line 352, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "C:\Python33\lib\json\decoder.py", line 370, in raw_decode
    raise ValueError("No JSON object could be decoded")
ValueError: No JSON object could be decoded

str(n.readall())的输出:

'b\'{"id":"55","name":"Jillian Copeland","first_name":"Jillian","last_name":"Copeland","username":"JCoMD","gender":"female","locale":"en_US"}\''

也许b正在抛弃它?

如果这是问题,如何将二进制流从readall转换为字符串而不是b

我正在尝试学习一个小蟒蛇,所以请记住这一点。

我在Windows中使用Python 3.3。

1 个答案:

答案 0 :(得分:4)

我认为这与this question完全相同,但遗憾的是没有接受的答案。

在我的结尾,这有效:

import urllib.request,json 

n = urllib.request.urlopen("http://graph.facebook.com/55")
d= json.loads(n.readall().decode('utf-8'))