在Python中解析JSON数据
时间:2020-03-05 15:31:28 来源:igfitidea点击:
JSON是一种人类可读的基于文本的数据格式。
它独立于语言,用于应用程序之间的数据交换。
在本文中,我们将解释如何在Python中解析JSON数据。
Python JSON
允许您对json数据进行编码和解码的json模块是Python标准库的一部分。
表示数据的JSON字符串。
编码或者序列化意味着将Python对象转换为可以存储在文件中或者通过网络传输的JSON字符串。
解码或者反序列化将JSON字符串转换为Python对象的反向编码过程。
下表显示了Python对象及其等效的JSON表示:
Python | JSON |
---|---|
dict | object |
list, tuple | array |
str | string |
int, float | number |
True | true |
False | false |
None | null |
要使用JSON,只需导入文件顶部的模块:
import json
在Python中编码JSON
json模块有两种将Python对象编码为json格式字符串的方法:dump()和dumps()。
dump()方法将输出发送到类似文件的对象。
它有两个位置参数:要编码的对象和类似文件的对象。
下面是一个例子:
data = { "country": "Germany", "vehicle": { "name": "Volkswagen", "model": "T-Roc" } } with open("file.json", "w") as file: json.dump(data, file)
如果运行脚本,它将创建一个名为文件.json:
file.json
{"country": "Germany", "vehicle": {"name": "Volkswagen", "model": "T-Roc"}}
dumps()方法的工作原理与dump()相同,但它不会将输出发送到类似文件的对象,而是返回一个字符串:
data = { "country": "Germany", "vehicle": { "name": "Volkswagen", "model": "T-Roc" } } json.dumps(data)
'{"country": "Germany", "vehicle": {"name": "Volkswagen", "model": "T-Roc"}}'
两个方法接受相同的关键字参数。
例如,如果正在分析或者调试JSON dat,则可能需要指定缩进级别:
data = { "country": "Germany", "vehicle": { "name": "Volkswagen", "model": "T-Roc" } } print(json.dumps(data, indent=2))
{ "country": "Germany", "vehicle": { "name": "Volkswagen", "model": "T-Roc" } }
在Python中解码JSON
要将JSON编码的数据转换为Python对象,请使用load()和loads()方法。
load()方法从类似文件的对象中读取JSON结构,并将其转换为Python对象。
假设有以下JSON文件:
file.json
[ { "userId": 1, "id": 1, "title": "Meet with Lisa", "completed": true }, { "userId": 1, "id": 2, "title": "Design a prototype", "completed": false } ]
要将JSON数据转换为Python表示,可以使用如下方法:
import json with open('file.json') as f: data = json.load(f) type(data)
JSON被转换为Python列表,可以在代码中使用:
方法的作用是:将包含JSON文档的字符串转换为Python对象:
import json json_str= '{"userId": "1", "id": "1", "title": "Meet with Lisa", "completed": "True"}' print(json.loads(json_str))
字符串将转换为Python字典:
{'userId': '1', 'id': '1', 'title': 'Meet with Lisa', 'completed': 'True'}
下面是一个更高级的示例,演示如何发出api请求并解码JSON数据:
import json import requests response = requests.get("https://jsonplaceholder.typicode.com/users") users = json.loads(response.text) print(users)