json.dumps()
和 json.loads()
是 Python json
模块中的两个常用函数,用于处理 JSON(JavaScript 对象表示法)格式的数据。
1. json.dumps()
- 功能: 将 Python 对象编码为 JSON 字符串。
- 参数:
obj
: 要编码的 Python 对象(如字典、列表、字符串等)。skipkeys
: 如果为True
,字典的键如果不是基本类型(如字符串)将被跳过。ensure_ascii
: 如果为True
,输出的结果将确保所有非 ASCII 字符都转义。indent
: 如果指定一个非负整数,则输入的 JSON 字符串将应用该级别的缩进,使其更易读。- 还有其他参数可用于自定义处理。
示例:
import json
data = {'name': 'Alice', 'age': 30, 'is_student': False}
json_string = json.dumps(data)
print(json_string) # 输出: {"name": "Alice", "age": 30, "is_student": false}
# type为str
2. json.loads()
- 功能: 将 JSON 字符串解码为 Python 对象。
- 参数:
s
: 要解码的 JSON 字符串。object_hook
: 可选的函数,用于将列表或字典解析成特定的类型。parse_float
,parse_int
,parse_constant
: 用于自定义数值和常量的解析方法。
示例:
import json
json_string = '{"name": "Alice", "age": 30, "is_student": false}'
data = json.loads(json_string)
print(data) # 输出: {'name': 'Alice', 'age': 30, 'is_student': False}
# type为dict
用途:
序列化和反序列化是计算机科学中与数据存储和传输相关的两个重要概念,通常用于将数据结构或者对象转换为可存储或传输的格式。
1. 序列化 (Serialization)
- 定义: 序列化是指将数据结构或对象转换为一种可以存储或传输的格式(例如,字符串、字节流或文件格式)。
- 目的: 主要用于保存数据到文件、数据库,或通过网络传输数据。
- 常用格式: JSON、XML、Protocol Buffers、Pickle 等。
- 示例: 在 Python 中,使用
json.dumps()
函数可以将字典序列化为 JSON 字符串。
示例代码:
import json
data = {'name': 'Alice', 'age': 30, 'is_student': False}
json_string = json.dumps(data) # 序列化为 JSON 字符串
print(json_string) # 输出: {"name": "Alice", "age": 30, "is_student": false}
2. 反序列化 (Deserialization)
- 定义: 反序列化是指将序列化后的数据(例如,字符串或字节流)转换回原始数据结构或对象。
- 目的: 主要用于从存储或网络读取数据并重建原始数据结构。
- 示例: 在 Python 中,使用
json.loads()
函数可以将 JSON 字符串反序列化为字典。
示例代码:
import json
json_string = '{"name": "Alice", "age": 30, "is_student": false}'
data = json.loads(json_string) # 反序列化为 Python 字典
print(data) # 输出: {'name': 'Alice', 'age': 30, 'is_student': False}
总结
json.dumps()
将 Python 对象转换为 JSON 格式的字符串。json.loads()
将 JSON 格式的字符串转换为 Python 对象。
这两个函数在数据存储、网络传输等场景中非常有用,用于在不同系统或语言之间传递结构化数据。
- 序列化: 将数据结构或对象转变为可存储或传输的格式。
- 反序列化: 将存储或传输的数据转换回原始的数据结构或对象。
这两个过程在应用程序开发、数据交换和持久化存储中是非常常见且重要的。