Python基础教程:JSON模块
Python基础教程:JSON模块
概述
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。Python 的 json
模块提供了编码和解码 JSON 数据的方法。
1. 导入 JSON 模块
在 Python 中使用 JSON 功能之前,需要先导入 json
模块。
import json
2. JSON 编码:Python 对象转 JSON 字符串
使用 json.dumps()
方法可以将 Python 对象(如字典和列表)转换成 JSON 格式的字符串。
data = {
'key1': 'value1',
'key2': ['item1', 'item2'],
'key3': 123,
}
json_str = json.dumps(data)
print(json_str)
# 输出: {"key1": "value1", "key2": ["item1", "item2"], "key3": 123}
3. JSON 解码:JSON 字符串转 Python 对象
使用 json.loads()
方法可以将 JSON 格式的字符串转换成 Python 对象。
json_str = '{"key1": "value1", "key2": ["item1", "item2"], "key3": 123}'
data = json.loads(json_str)
print(data)
# 输出: {'key1': 'value1', 'key2': ['item1', 'item2'], 'key3': 123}
4. 编码时的高级用法
4.1 指定编码字符
默认情况下,json.dumps()
方法会将非 ASCII 字符转换成 Unicode 转义序列。可以使用 ensure_ascii=False
参数保留非 ASCII 字符。
data = {'key': '你好'}
json_str = json.dumps(data, ensure_ascii=False)
print(json_str)
# 输出: {"key": "你好"}
4.2 指定缩进
使用 indent
参数可以指定缩进的空格数,使输出的 JSON 字符串更易读。
json_str = json.dumps(data, indent=4)
print(json_str)
# 输出:
# {
# "key": "你好"
# }
4.3 使用自定义的编码函数
可以为 json.dumps()
方法提供一个 default
参数,该参数是一个函数,用于处理无法直接序列化的 Python 对象。
class MyClass:
def __init__(self, value):
self.value = value
def my_encoder(obj):
if isinstance(obj, MyClass):
return obj.__dict__
data = {'key': MyClass(123)}
json_str = json.dumps(data, default=my_encoder)
print(json_str)
# 输出: {"key": {"value": 123}}
5. 解码时的高级用法
5.1 大对象解码
当处理大型 JSON 数据时,可以使用 json.load()
方法的大对象解码功能。
with open('large_data.json', 'r') as file:
data = json.load(file)
6. JSON 模块的其他功能
json
模块还提供了其他一些功能,如:
json.dump()
:将 Python 对象直接写入文件。json.dumps()
:将 Python 对象转换成 JSON 格式的字符串,支持二进制编码。json.loads()
:从字符串加载 JSON 数据,支持二进制编码。
7. 总结
通过本教程,我们学习了 Python json
模块的基本概念和使用方法。包括 JSON 编码(将 Python 对象转换为 JSON 字符串)和 JSON 解码(将 JSON 字符串转换为 Python 对象),以及一些高级用法,如指定编码字符、缩进、自定义编码函数和大对象解码。
JSON 是一种非常实用的数据交换格式,json
模块提供了强大的功能来处理 JSON 数据。希望本教程能帮助你更好地使用 Python 处理 JSON 数据。如果你有任何问题或建议,请在评论区留言讨论。