为什么它给我错误,“JSON对象必须是str,而不是'bytes'”,我该如何修复它?

2024-06-16 09:57:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我在学习如何使用JSON对象的教程(link:https://www.youtube.com/watch?v=Y5dU2aGHTZg)。当他们运行代码时,他们没有发现错误,但我发现了。这是和不同的Python版本有关吗?在

from urllib.request import urlopen
import json

def printResults(data):
    theJSON = json.loads(data)
    print (theJSON)

def main():
    urlData ="http://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/2.5_day.geojson"

    webUrl = urlopen(urlData)
    print(webUrl.getcode())
    if (webUrl.getcode()==200):
        data = webUrl.read()
        printResults(data)
    else:
        print ("You failed")

main()

Tags: 对象importjsondatamaindef教程urlopen
2条回答

^{}返回的^{} object读取bytes数据(原始二进制数据),而不是{}数据(文本数据),而json模块与str一起工作。在使用json.loads之前,您需要知道(或检查报头以确定)接收到的数据所使用的编码,并且decode适当地对其进行编码。在

假设是UTF-8(大多数网站都是),您只需更改:

data = webUrl.read()

收件人:

^{2}$

它会解决你的问题。在

我想他们使用的是不同版本的urllib

尝试使用urllib3并按如下方式进行导入:

from urllib import urlopen

希望这能解决你的问题

相关问题 更多 >