Python 的 json
模块用于处理 JSON 格式的数据,可以将 JSON 数据与 Python 数据结构之间相互转换。以下是具体用法,包括从文件读取 JSON 数据以及将数据写入文件:
1. 将 JSON 数据从文件中读取到 Python 数据结构
代码示例:
import json
# 从文件读取 JSON 数据
with open("data.json", "r", encoding="utf-8") as file:
data = json.load(file) # 将 JSON 文件内容解析为 Python 数据结构
print(data)
解析过程:
json.load()
:从文件对象读取 JSON 数据并反序列化为 Python 数据结构,如字典或列表。
2. 将 Python 数据结构写入到文件中(序列化为 JSON)
代码示例:
import json
# 创建一个 Python 数据结构
data = {
"name": "Alice",
"age": 25,
"skills": ["Python", "Machine Learning"]
}
# 将数据写入到 JSON 文件
with open("data.json", "w", encoding="utf-8") as file:
json.dump(data, file, ensure_ascii=False, indent=4)
print("数据已写入 JSON 文件")
序列化过程:
json.dump()
:将 Python 数据结构写入到文件,同时序列化为 JSON 格式。- 参数说明:
ensure_ascii=False
:允许输出非 ASCII 字符(如中文)。indent=4
:设置缩进,提高可读性。
3. JSON 与 Python 数据结构对应关系
JSON 数据类型 | Python 数据类型 |
---|---|
对象(Object) | 字典(dict) |
数组(Array) | 列表(list) |
字符串(String) | 字符串(str) |
数字(Number) | 整数(int)或浮点数(float) |
布尔值(Boolean) | 布尔值(True/False) |
空值(null) | None |
4. 其他常用方法
- 从字符串中加载 JSON 数据:python复制代码
json_data = '{"name": "Bob", "age": 30}'
data = json.loads(json_data)
print(data) # 输出 Python 字典:{'name': 'Bob', 'age': 30}
2. 将 Python 数据结构转换为 JSON 字符串:
data = {"name": "Bob", "age": 30}
json_data = json.dumps(data, ensure_ascii=False, indent=2)
print(json_data)
5. 常见问题及解决方法
- 文件编码问题:
- 如果处理非 ASCII 字符(如中文),需设置
encoding="utf-8"
,并在序列化时设置ensure_ascii=False
。
- 如果处理非 ASCII 字符(如中文),需设置
- ValueError 异常:
- 如果 JSON 文件格式错误或内容不完整,
json.load()
会抛出异常。 - 可使用在线 JSON 校验工具(如 jsonlint)检查格式。
- 如果 JSON 文件格式错误或内容不完整,
JSON 模块是处理轻量级数据交换格式的强大工具,尤其适用于配置文件、API 数据处理等场景。通过 load
和 dump
方法,可以轻松实现文件与数据的转换操作。
发布者:myrgd,转载请注明出处:https://www.object-c.cn/4571