在 Python 中,字典(dict) 和 JSON(JavaScript Object Notation) 是两种看似相似但本质不同的数据表示形式。以下是它们的核心区别和关联:
1. 核心概念不同
字典(dict) | JSON |
---|---|
Python 的内置数据类型,存储键值对 | 一种通用的轻量级数据交换格式,独立于编程语言 |
用于内存中的数据处理 | 用于跨平台、跨系统的数据传输和存储(如网络传输、配置文件) |
语法遵循 Python 规则 | 语法遵循 JSON 标准规范 |
2. 语法差异 | |
字典(Python 语法) |
person = {
"name": "Alice",
"age": 30,
"is_student": False,
"courses": ["Math", "Physics"],
"address": None # Python 中用 None
}
JSON(严格语法规范)
{
"name": "Alice",
"age": 30,
"is_student": false, // JSON 必须小写
"courses": ["Math", "Physics"],
"address": null // JSON 中用 null
}
关键区别:
- 引号要求:JSON 键和字符串必须用双引号,Python 字典可用单/双引号。
- 布尔值:JSON 用 true/false(小写),Python 用 True/False(首字母大写)。
- 空值:JSON 用 null,Python 用 None。
3数据类型支持
数据类型 | 字典支持 | JSON 支持 |
---|---|---|
字符串 | ✅ | ✅ |
数字(整型/浮点) | ✅ | ✅ |
布尔值 | ✅ | ✅ |
列表/数组 | ✅ | ✅ |
字典/对象 | ✅ | ✅ |
None/null | ✅ | ✅ |
元组(Tuple) | ✅ | ❌(转为数组) |
集合(Set) | ✅ | ❌ |
自定义对象 | ✅ | ❌(需序列化) |
4相互转换方法
Python 的 json 模块可实现字典与 JSON 字符串的转换:
字典 → JSON(序列化)
import json
data_dict = {"name": "Alice", "age": 30}
json_str = json.dumps(data_dict) # 转换为 JSON 字符串
print(json_str) # 输出:{"name": "Alice", "age": 30}
JSON → 字典(反序列化)
json_str = '{"name": "Bob", "age": 25}'
data_dict = json.loads(json_str) # 转换为字典
print(data_dict["name"]) # 输出:Bob
5. 实际应用场景
字典的用途:
- Python 内部数据操作(增删改查)
- 临时存储结构化数据
JSON 的用途:
-
与前端/API 交互(如 HTTP 请求响应)
-
保存配置文件(如 config.json)
-
数据库存储结构化文本
总结
字典 | JSON |
---|---|
Python 内存中的数据结构 | 跨平台的文本数据格式 |
操作灵活,支持更多数据类型 | 格式严格,通用性强 |
直接用于编程逻辑处理 | 用于数据持久化和传输 |
核心原则:
- 在 Python 内部处理数据时,优先使用字典。
- 需要与其他系统交互或存储时,转换为 JSON。