Python字典与JSON格式互相转换指南

陆景行
陆景行
发布时间:2026-10-12| 2人浏览过
原创

详细讲解如何利用Python内置json模块实现字典与JSON字符串的双向转换。通过代码演示序列化与反序列化操作流程,明确字典键的唯一性与不可变限制,并提供嵌套复杂结构的标准写法,助力快速完成数据交换任务。

JSON与Python数据的对应关系

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,常用于前后端传输文本数据。Python通过内置的json库提供类型映射机制,无需额外安装即可在两种格式间无缝切换。数据解析通常分为两个阶段:从JSON字符串到Python对象(反序列化),以及从Python对象到JSON字符串(序列化)。

转换前的核心注意事项

字典键的特性限制

字典的值可包含任意Python对象,但键必须遵循以下规则:

  • 唯一性:同一键不能出现两次。创建时若重复赋值,后一个值将覆盖前者。
字典同名键赋值覆盖演示截图
演示相同键被多次赋值时,仅保留最后一次赋值的内存状态
  • 不可变性:键必须是哈希类型(如数字、字符串或元组)。列表等可变对象无法作为键,否则触发TypeError。
使用列表作为字典键报错的终端输出截图
展示将列表直接设为字典键时引发的运行时错误

实现字典与JSON转换的操作步骤

第1步:引入标准JSON模块

目的:启用数据转换工具。入口:新建或打开待处理的Py文件。动作:添加模块声明。重要参数:无。完成状态:解释器可识别json命名空间。

import json

第2步:使用json.dumps()将字典转为JSON字符串

目的:将内存中的Python对象持久化或网络传输。入口:交互式命令行或脚本运行窗口。动作:调用序列化函数传递字典。重要参数:目标字典对象、可选的缩进(indent)控制符。完成状态:终端打印出类型为str的标准JSON文本。

>> d = {'s': 'you', 'd': 'are'}
>> j = json.dumps(d)
>> type(j)
<class 'str'>
json.dumps函数执行结果终端截图
验证输出对象的类型已确认为字符串,表明序列化成功

第3步:使用json.loads()将JSON字符串还原为字典

目的:接收外部传入的报文并还原为可计算对象。入口:同上交互环境。动作:调用反序列化函数传入JSON字符流。重要参数:合法的JSON字符串。完成状态:终端返回类型为dict或list的Python原生数据结构。

>> d1 = json.loads(j)
>> type(d1)
<class 'dict'>
json.loads函数执行结果终端截图
确认还原后的数据类型恢复为Python字典

嵌套数据的结构特征

在实际业务中,经常需要处理多层级嵌套的数据。JSON本身不支持注释和函数,仅由键值对(Object)和有序列表(Array)构成。当字典内嵌字典或列表时,转换逻辑依然有效:

dict1 = {
    'java': {'year': '1996', 'url': 'www/baidu.com', 'score': [20, 30, 40]},
    'python': {'year': '1994', 'url': 'www/baidu.com', 'score': [50, 60, 70]}
}
list_dict = [{'java': 'aaa'}, {'python': 'bbbb'}]
list_dict2 = {'java': [{'year': '1996', 'score': [20, 30, 40]}, {'year': '1994', 'score': [50, 60, 70]}]}

上述结构均可被dumps()正确编码为合法JSON文本。解析时,JSON中的[]会自动映射为Python的list,{}映射为dict,基础类型按标准类型表对应转换。

简要总结

以上就是Python字典和JSON格式互相转换的详细内容,更多关于Python数据处理与接口开发的资料请关注本站其它相关文章!

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。