解码utf-8后我得到TypeError:JSON对象必须是str,而不是'bytes'

时间:2015-11-22 16:22:19

标签: python json utf-8

即使在使用decode('utf-8')之后我也会得到以下错误。

TypeError: the JSON object must be str, not 'bytes'

现在我已经读到很少有人在3.x中遇到类似的问题,但是他们中的大多数都是通过使用解码功能来解决它​​,这似乎对我不起作用。任何人都可以帮我一把吗?我是Python的初学者。

import urllib.request
import json

request = 'https://api.myjson.com/bins/56els'
response = urllib.request.urlopen(request)
obj = json.load(response)
str_response = response.readall().decode('utf-8')

print(obj)

1 个答案:

答案 0 :(得分:0)

你很接近 - 你需要在json.load之前放置解码。即。

import urllib.request
import json

request = 'https://api.myjson.com/bins/56els'
response = urllib.request.urlopen(request)
str_response = response.readall().decode('utf-8')
obj = json.load(str_response)

print(obj)

您的代码假定网络服务器正在返回“utf-8”编码数据。您应该检查响应上的Content-type标头并适当地设置解码。或者,使用内置自动解码的Requests库。它还解码为JSON,这将对您有所帮助。