在 Python 中,JSON
(JavaScript Object Notation)是一种轻量级的数据交换格式,用于表示结构化数据。它易于人类阅读和编写,同时也易于机器解析和生成。Python 提供了内置的 json
模块,用于处理 JSON 数据的解析和生成。
目录
- JSON 基本介绍
- JSON 和 Python 数据类型的映射
- 加载 JSON 数据
- 转换 Python 对象为 JSON 字符串
- 读取和写入 JSON 文件
- JSON 格式化输出
- 处理 JSON 错误
- 参考资料
1. JSON 基本介绍
JSON 是一种轻量级的数据交换格式,广泛应用于网络通信中。JSON 格式的数据可以由键值对组成,其中键通常是字符串类型,值可以是字符串、数字、布尔值、数组、对象等。
一个 JSON 数据的例子:
{
"name": "Alice",
"age": 25,
"is_student": false,
"courses": ["Math", "Science"]
}
2. JSON 和 Python 数据类型的映射
在 Python 中,json
模块允许我们将 JSON 数据与 Python 数据类型之间进行相互转换。以下是常见的映射规则:
JSON 类型 | Python 类型 |
---|---|
JSON 对象(键值对) | Python 字典(dict) |
JSON 数组 | Python 列表(list) |
JSON 字符串 | Python 字符串(str) |
JSON 数字 | Python 整数或浮点数(int/float) |
JSON 布尔值 | Python 布尔值(bool) |
JSON null | Python None |
3. 加载 JSON 数据
使用 json
模块中的 loads()
方法可以将 JSON 字符串转换为 Python 对象。loads()
代表 “load string”(加载字符串)。
import json
# JSON 字符串
json_str = '{"name": "Alice", "age": 25, "is_student": false}'
# 将 JSON 字符串转换为 Python 字典
python_obj = json.loads(json_str)
print(python_obj)
# 输出: {'name': 'Alice', 'age': 25, 'is_student': False}
4. 转换 Python 对象为 JSON 字符串
使用 json.dumps()
方法可以将 Python 对象转换为 JSON 字符串。dumps()
代表 “dump string”(转储字符串)。
import json
# Python 字典
python_obj = {"name": "Alice", "age": 25, "is_student": False}
# 将 Python 对象转换为 JSON 字符串
json_str = json.dumps(python_obj)
print(json_str)
# 输出: {"name": "Alice", "age": 25, "is_student": false}
5. 读取和写入 JSON 文件
Python 提供了 json.load()
和 json.dump()
方法,分别用于读取和写入 JSON 文件。
读取 JSON 文件
import json
# 假设我们有一个 JSON 文件 'data.json'
with open('data.json', 'r') as file:
python_obj = json.load(file)
print(python_obj)
写入 JSON 文件
import json
# Python 对象
python_obj = {"name": "Alice", "age": 25, "is_student": False}
# 将 Python 对象写入到 'data.json' 文件中
with open('data.json', 'w') as file:
json.dump(python_obj, file)
6. JSON 格式化输出
使用 json.dumps()
时,可以通过 indent
参数来格式化输出,使其更易读。例如,可以设置缩进层级来美化输出。
import json
python_obj = {"name": "Alice", "age": 25, "is_student": False}
# 格式化输出
json_str = json.dumps(python_obj, indent=4)
print(json_str)
# 输出:
# {
# "name": "Alice",
# "age": 25,
# "is_student": false
# }
7. 处理 JSON 错误
在加载 JSON 数据时,如果格式不正确,json
模块会引发 json.JSONDecodeError
异常。可以使用 try...except
来捕获和处理错误。
import json
invalid_json_str = '{"name": "Alice", "age": 25,}' # 错误的 JSON
try:
python_obj = json.loads(invalid_json_str)
except json.JSONDecodeError as e:
print("JSON Decode Error:", e)
8. 参考资料
出站链接
站内链接
以上是 Python 中常见的 json
模块的使用方法,涵盖了从加载、转换、格式化到处理 JSON 错误的基本操作。这些工具对于处理 Web 应用、API 响应以及跨语言的数据交换非常有用。
发表回复