大家好,我是水滴~~
本篇文章主要介绍json
模块的功能,包括将Python对象序列化到文件、将Python对象序列化为字符串、序列化时类型的对照表、将文件中JSON数据反序列化为Python对象,将JSON字符串反序列化为Python对象、反序列化时类型的对照表等。
文章中包含大量的代码示例,能够帮助新手同学快速入门。
《Python入门核心技术》专栏总目录・点这里
文章目录
- 1. 数据序列化
- 1.1 使用`dump()`函数将数据序列化到文件
- 1.2 使用`dumps()`函数将数据序列化为字符串
- 1.3 序列化类型对照表
- 2. 数据反序列化
- 2.1 使用`load()`函数从文件中反序列化数据
- 2.2 使用`loads()`函数从字符串中反序列化数据
- 2.3 反序列化类型对照表
- 3. 总结
JSON(JavaScript Object Notation)是一种常用的数据交换格式,它以简洁和易于理解的方式表示结构化数据。Python中的JSON模块提供了数据序列化和反序列化的功能,使您能够轻松地将Python对象转换为JSON格式,并将JSON数据转换回Python对象。本教程将详细介绍如何使用JSON模块进行数据序列化和反序列化,并提供一些示例代码帮助您入门。
1. 数据序列化
数据序列化是将Python对象转换为JSON格式的过程。JSON模块中的dump()
和dumps()
函数可以实现数据的序列化。
1.1 使用dump()
函数将数据序列化到文件
json
模块是Python标准库中的一个模块,使用时直接使用import
引入即可。下面是一个示例,演示如何使用dump()
函数将Python对象序列化到文件:
import json
data = {
'name': '水滴',
'age': 20,
'city': '青岛'
}
# 将数据序列化到文件
with open('data.json', 'w', encoding='utf-8') as file:
json.dump(data, file, ensure_ascii=False)
data.json
文件内容:
{"name": "水滴", "age": 20, "city": "青岛"}
上述代码将一个字典对象序列化为JSON格式,并将其写入名为data.json
的文件中。使用dump()
函数,首先指定要序列化的数据对象,然后指定要写入的文件对象。
注意:使用ensure_ascii=False
参数来保留中文字符,否则中文数据将转为ASCII码。
1.2 使用dumps()
函数将数据序列化为字符串
下面是一个示例,演示如何使用dumps()
函数将Python对象序列化为JSON格式的字符串:
import json
data = {
'name': '水滴',
'age': 20,
'city': '青岛'
}
# 将数据序列化为字符串
json_str = json.dumps(data, ensure_ascii=False)
# 打印序列化后的字符串
print(json_str)
输出内容:
{"name": "水滴", "age": 20, "city": "青岛"}
上述代码将一个字典对象序列化为JSON格式的字符串。使用dumps()
函数,将要序列化的数据对象作为参数传递给函数,并将返回的字符串赋值给变量json_str
。最后,打印序列化后的字符串。
注意:使用ensure_ascii=False
参数来保留中文字符,否则中文数据将转为ASCII码。
1.3 序列化类型对照表
在序列化时,会将 Python 原始类型转化为 JSON 类型,下面是序列化时数据类型转换的对照表:
Python | JSON |
---|---|
dict | object – 对象 |
list, tuple | array |
str | string |
int, float, int 和 float 派生的枚举 | number |
True | true |
False | false |
None | null |
2. 数据反序列化
数据反序列化是将JSON格式的数据转换回Python对象的过程。JSON模块中的load()
和loads()
函数可以实现数据的反序列化。
2.1 使用load()
函数从文件中反序列化数据
下面是一个示例,演示如何使用load()
函数从文件中反序列化数据:
import json
# 从文件中反序列化数据
with open('data.json', 'r', encoding='utf-8') as file:
data = json.load(file)
# 打印反序列化后的数据
print(data)
输出内容:
{'name': '水滴', 'age': 20, 'city': '青岛'}
上述代码从名为data.json
的文件中读取JSON格式的数据,并使用load()
函数进行反序列化。通过打开文件并传递文件对象给load()
函数,可以将文件中的JSON数据转换为相应的Python对象。
2.2 使用loads()
函数从字符串中反序列化数据
下面是一个示例,演示如何使用loads()
函数从字符串中反序列化数据:
import json
json_str = '{"name": "水滴", "age": 20, "city": "青岛"}'
# 从字符串中反序列化数据
data = json.loads(json_str)
# 打印反序列化后的数据
print(data)
输出内容:
{'name': '水滴', 'age': 20, 'city': '青岛'}
上述代码从一个JSON格式的字符串中反序列化数据。使用loads()
函数,将要反序列化的JSON字符串作为参数传递给函数,并将返回的Python对象赋值给变量data
。最后,打印反序列化后的数据。
2.3 反序列化类型对照表
在反序列化时,会将 JSON 类型转化为 Python 原始类型,下面是反序列化时数据类型转换的对照表:
JSON | Python |
---|---|
object – 对象 | dict |
array | list – 列表 |
string | str |
number (int) | int |
number (real) | float |
true | True |
false | False |
null | None |
3. 总结
使用JSON模块进行数据序列化和反序列化,您可以方便地在Python和其他应用程序之间进行数据交换。本教程详细介绍了JSON模块的数据序列化和反序列化功能,并提供了代码示例帮助您入门。通过掌握这些基本用法,您可以在自己的项目中有效地使用JSON模块进行数据处理和交互。
请注意,本教程仅介绍了JSON模块的基本用法,还有其他一些高级功能和选项可供探索和学习。如需了解更多信息,请参阅Python官方文档中有关JSON模块的详细说明。