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)
如果运行脚本,它将创建一个名为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,则可能需要指定缩进级别:
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列表,您可以在代码中使用它:
<class 'list'>
loads()
方法将包含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)
结论
我们向您介绍了如何使用Python编码和解码JSON数据。
如果您有任何问题或反馈,请随时发表评论。