json 是 Python 中用于处理 JSON 数据的标准库。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人类阅读和编写,同时也易于机器解析和生成。Python 的 json 模块提供了将 Python 对象与 JSON 数据相互转换的功能。
1. 基本功能
json 模块提供了四个主要的函数:
- json.dump()
- json.dumps()
- json.load()
- json.loads()
1.1 json.dump()
json.dump() 用于将 Python 对象序列化为 JSON 格式,并写入文件。
import jsondata = {"name": "Alice","age": 30,"is_student": False
}with open('data.json', 'w') as file:json.dump(data, file)
1.2 json.dumps()
json.dumps() 用于将 Python 对象序列化为 JSON 格式的字符串。
import jsondata = {"name": "Alice","age": 30,"is_student": False
}json_string = json.dumps(data)
print(json_string)
1.3 json.load()
json.load() 用于从文件中读取 JSON 数据,并将其反序列化为 Python 对象。
import jsonwith open('data.json', 'r') as file:data = json.load(file)print(data)
1.4 json.loads()
json.loads() 用于将 JSON 格式的字符串反序列化为 Python 对象。
import jsonjson_string = '{"name": "Alice", "age": 30, "is_student": false}'
data = json.loads(json_string)
print(data)
2. 参数详解
2.1 json.dump() 和 json.dumps()
- obj: 要序列化的 Python 对象。
- fp: 文件对象(仅适用于 json.dump())。
- skipkeys: 如果为 True,则跳过无法序列化的键。
- ensure_ascii: 如果为 False,则输出包含非 ASCII 字符。
- check_circular: 如果为 False,则禁用循环引用检查。
- allow_nan: 如果为 False,则禁止 NaN、Infinity 和 -Infinity。
- cls: 自定义 JSON 编码器类。
- indent: 缩进级别,用于格式化输出。
- separators: 用于分隔 JSON 对象的项和键值对的字符串。
- default: 自定义序列化函数。
- sort_keys: 如果为 True,则按键排序输出。
示例:
import jsondata = {"name": "Alice","age": 30,"is_student": False
}json_string = json.dumps(data, indent=4, sort_keys=True)
print(json_string)
2.2 json.load() 和 json.loads()
- fp: 文件对象(仅适用于 json.load())。
- s: JSON 字符串(仅适用于 json.loads())。
- cls: 自定义 JSON 解码器类。
- object_hook: 自定义对象钩子函数。
- parse_float: 自定义浮点数解析函数。
- parse_int: 自定义整数解析函数。
- parse_constant: 自定义常量解析函数。
- object_pairs_hook: 自定义对象对钩子函数。
示例:
import jsonjson_string = '{"name": "Alice", "age": 30, "is_student": false}'def custom_decoder(dct):if 'age' in dct:dct['age'] = str(dct['age']) + " years old"return dctdata = json.loads(json_string, object_hook=custom_decoder)
print(data)
3. 错误处理
在处理 JSON 数据时,可能会遇到一些常见的错误,例如文件不存在或 JSON 格式不正确。可以使用 try-except 块来处理这些错误:
import jsontry:with open('data.json', 'r') as file:data = json.load(file)print(data)
except FileNotFoundError:print("文件未找到")
except json.JSONDecodeError:print("JSON 格式错误")
4. 总结
Python 的 json 模块提供了强大的功能来处理 JSON 数据。通过 json.dump() 和 json.dumps(),你可以将 Python 对象序列化为 JSON 格式;通过 json.load() 和 json.loads(),你可以将 JSON 数据反序列化为 Python 对象。利用这些功能,你可以轻松地在 Python 程序中处理 JSON 数据。