当前位置: 首页 > 面试题库 >

使用urllib.request和json模块在Python中加载JSON对象

计光赫
2023-03-14
问题内容

我在使模块“ json”和“ urllib.request”在简单的Python脚本测试中协同工作时遇到问题。使用Python 3.5,代码如下:

import json
import urllib.request

urlData = "http://api.openweathermap.org/data/2.5/weather?q=Boras,SE"
webURL = urllib.request.urlopen(urlData)
print(webURL.read())
JSON_object = json.loads(webURL.read()) #this is the line that doesn't work

通过命令行运行脚本时,出现的错误是“ TypeError:JSON对象必须为str,而不是’bytes’
”。我是Python的新手,因此很可能是一个非常简单的解决方案。感谢这里的任何帮助。


问题答案:

除了忘记解码之外,您只能读取 一次 响应。已经调用过.read(),第二次调用返回一个空字符串。

.read()只需调用一次,然后将数据 解码 为字符串:

data = webURL.read()
print(data)
encoding = webURL.info().get_content_charset('utf-8')
JSON_object = json.loads(data.decode(encoding))

response.info().get_content_charset()呼叫将告诉您服务器认为使用了哪些字符集。

演示:

>>> import json
>>> import urllib.request
>>> urlData = "http://api.openweathermap.org/data/2.5/weather?q=Boras,SE"
>>> webURL = urllib.request.urlopen(urlData)
>>> data = webURL.read()
>>> encoding = webURL.info().get_content_charset('utf-8')
>>> json.loads(data.decode(encoding))
{'coord': {'lat': 57.72, 'lon': 12.94}, 'visibility': 10000, 'name': 'Boras', 'main': {'pressure': 1021, 'humidity': 71, 'temp_min': 285.15, 'temp': 286.39, 'temp_max': 288.15}, 'id': 2720501, 'weather': [{'id': 802, 'description': 'scattered clouds', 'icon': '03d', 'main': 'Clouds'}], 'wind': {'speed': 5.1, 'deg': 260}, 'sys': {'type': 1, 'country': 'SE', 'sunrise': 1443243685, 'id': 5384, 'message': 0.0132, 'sunset': 1443286590}, 'dt': 1443257400, 'cod': 200, 'base': 'stations', 'clouds': {'all': 40}}


 类似资料:
  • 问题内容: 我正在尝试从Python解析JSON。我最近开始使用Python,因此我跟随一些stackoverflow教程,了解如何使用Python解析JSON,并提出了以下代码- 但是,每当我运行上面的代码时,我总是会收到此错误- 有什么想法我在这里做错了吗?我在Windows中运行cygwin,仅从那里运行python程序。我正在使用Python 2.7.3 还有解析JSON的更好,有效的方法

  • 主要内容:jons.loads(),json.dump(),json.load(),json.dumps()JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,遵循欧洲计算机协会制定的 JavaScript 规范(简称 ECMAScript)。JSON 易于人阅读和编写,同时也易于机器解析和生成,能够有效的提升网信息的传输效率,因此它常被作为网络、程序之间传递信息的标准语言,比如客户端与服务器之间信息交互就是以 JSON 格式传递的。 简单地说,JSON

  • 问题内容: 我正在尝试在Python中加载和解析JSON文件。但是我在尝试加载文件时遇到了困难: 产量: 我看着 18.2。— Python文档中的 JSON编码器和解码器 ,但是通读这个看起来糟透了的文档非常令人沮丧。 前几行(用随机条目匿名): 问题答案: 您有一个JSON Lines格式的文本文件。您需要逐行解析文件: 每 行都 包含有效的JSON,但总的来说,它不是有效的JSON值,因为没

  • 本文向大家介绍Python标准库json模块和pickle模块使用详解,包括了Python标准库json模块和pickle模块使用详解的使用技巧和注意事项,需要的朋友参考一下 将Python数据类型转换为其他代码格式叫做(序列化),而json就是在各个代码实现转换的中间件。 序列化要求: 1. 只能有int,str,bool,list,dict,tuple的类型支持序列化。 2. json序列化是

  • 问题内容: 我正在尝试在Python中加载和解析JSON文件。但是我在尝试加载文件时遇到了困难: 产量: 我看着18.2。文档中的JSON编码器和解码器,但是通读这个看起来糟透了的文档非常令人沮丧。 前几行(用随机条目匿名): 问题答案: 你有一个JSON Lines格式的文本文件。你需要逐行解析文件: 每行都包含有效的JSON,但总体而言,它不是有效的JSON值,因为没有顶级列表或对象定义。 请

  • 问题内容: 我想使用Python的JSON模块。它仅在Python 2.6中引入,而我现在仍停留在2.5。Python2.6随附的特定JSON模块是否可以作为可与2.5一起使用的单独模块使用? 问题答案: 您可以使用simplejson。 如答案表格pkoch所示,您可以使用以下import语句来获取json库,具体取决于安装的python版本: