JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。Python 标准库提供了一个名为 json
的模块,专门用于处理 JSON 数据。这个模块提供了将 Python 对象编码成 JSON 字符串,以及将 JSON 字符串解码成 Python 对象的函数。
一、导入 json 模块
在使用 Python 的 json
模块之前,你需要先导入它:
python复制代码
import json
二、编码(Python 对象到 JSON 字符串)
json
模块提供了 json.dumps()
方法,用于将 Python 对象编码成 JSON 字符串。
- 基本用法:
python复制代码
data = {
"name": "Alice",
"age": 25,
"is_student": True,
"scores": [85, 90, 92],
"address": {
"city": "Wonderland",
"street": "Rainbow Road"
}
}
json_str = json.dumps(data)
print(json_str)
输出将是一个 JSON 格式的字符串:
json复制代码
{"name": "Alice", "age": 25, "is_student": true, "scores": [85, 90, 92], "address": {"city": "Wonderland", "street": "Rainbow Road"}}
- 参数:
-
indent
:用于美化输出,指定缩进级别。 -
sort_keys
:是否对字典的键进行排序。 -
ensure_ascii
:默认为True
,输出所有非 ASCII 字符转义字符;如果为False
,则尝试直接使用 Unicode 字符。
python复制代码
json_str_pretty = json.dumps(data, indent=4, sort_keys=True, ensure_ascii=False)
print(json_str_pretty)
三、解码(JSON 字符串到 Python 对象)
json
模块提供了 json.loads()
方法,用于将 JSON 字符串解码成 Python 对象。
- 基本用法:
python复制代码
json_str = '{"name": "Alice", "age": 25, "is_student": true, "scores": [85, 90, 92], "address": {"city": "Wonderland", "street": "Rainbow Road"}}'
data = json.loads(json_str)
print(data)
print(type(data)) # <class 'dict'>
输出将是一个 Python 字典。
- 处理异常:
- 在解码过程中,如果 JSON 字符串格式不正确,会抛出
json.JSONDecodeError
异常。
python复制代码
try:
invalid_json_str = '{"name": "Alice", "age": "twenty-five"}' # age 应该是整数而不是字符串
data = json.loads(invalid_json_str)
except json.JSONDecodeError as e:
print(f"JSON 解码错误: {e}")
四、文件操作
除了处理字符串,json
模块还提供了 json.dump()
和 json.load()
方法,用于直接将 Python 对象写入 JSON 文件和从 JSON 文件读取 Python 对象。
- json.dump():
python复制代码
with open('data.json', 'w', encoding='utf-8') as f:
json.dump(data, f, indent=4, ensure_ascii=False)
- json.load():
python复制代码
with open('data.json', 'r', encoding='utf-8') as f:
loaded_data = json.load(f)
print(loaded_data)
五、总结
Python 的 json
模块提供了一种简单而强大的方式来处理 JSON 数据。无论是将 Python 对象编码成 JSON 字符串,还是从 JSON 字符串解码成 Python 对象,json
模块都提供了灵活且易于使用的函数。此外,通过文件操作方法,你还可以轻松地将 JSON 数据存储到文件中或从文件中读取。掌握这些技能将帮助你更有效地处理 JSON 数据,并在 Python 编程中更加游刃有余。