当前位置: 首页 > news >正文

Python JSON 操作指南:4 个核心方法一文吃透

在 Python 开发中,JSON 是最常用的数据交换格式,无论是接口数据传输、配置文件读写,还是数据持久化,都离不开json模块。但很多新手容易混淆dump/dumps/load/loads四个方法,今天就用最通俗的语言、最全的案例,帮你彻底搞定 Python JSON 操作!

一、先搞懂:4 个核心方法的核心区别

json模块的 4 个方法,本质是 **「数据类型转换」「文件读写」** 的组合,一句话区分:

  • s的(dumps/loads):操作字符串(内存中转换,不读写文件)
  • 不带s的(dump/load):操作文件(直接读写文件,一步到位)
  • dump开头:Python 对象 → JSON(序列化)
  • load开头:JSON → Python 对象(反序列化)

二、序列化:Python 对象 → JSON 格式

序列化就是把 Python 里的字典、列表,转换成标准的 JSON 格式,分转字符串写文件两种场景。

1. json.dumps ():转 JSON 字符串(最常用)

适合需要在内存中使用 JSON 字符串的场景,比如打印、接口返回数据。关键参数

  • ensure_ascii=False:保留中文(默认会把中文转成 Unicode 编码)
  • indent=4:格式化缩进,让 JSON 更易读
import json # 定义 Python 字典 student = { "name": "张三", "age": 22, "major": "计算机科学", "hobbies": ["编程", "篮球", "阅读"] } # 转换为 JSON 字符串(保留中文+格式化) json_str = json.dumps(student, ensure_ascii=False, indent=4) # 输出结果:标准 JSON 格式字符串 print("JSON 字符串:") print(json_str) print("类型:", type(json_str)) # <class 'str'>

2. json.dump ():直接写入 JSON 文件

适合需要把数据持久化保存到文件的场景,一步完成转换 + 写入,无需手动处理字符串。

import json student = { "name": "李四", "age": 23, "major": "人工智能" } # 打开文件,直接写入 JSON 数据 with open("student.json", "w", encoding="utf-8") as f: # 参数:Python对象 + 文件对象 + 格式化参数 json.dump(student, f, ensure_ascii=False, indent=4) # 执行后:桌面/代码目录会生成 student.json 文件

三、反序列化:JSON 格式 → Python 对象

反序列化就是把 JSON 数据,转回 Python 能直接操作的字典、列表,同样分解析字符串读文件两种场景。

1. json.loads ():解析 JSON 字符串

适合处理接口返回的字符串、变量中的 JSON 数据,转回 Python 字典后可直接取值。

import json # 模拟 JSON 字符串(比如接口返回的数据) json_str = ''' { "name": "张三", "age": 22, "major": "计算机科学", "hobbies": ["编程", "篮球", "阅读"] } ''' # 转换为 Python 字典 python_dict = json.loads(json_str) # 直接像字典一样取值 print("姓名:", python_dict["name"]) # 张三 print("年龄:", python_dict["age"]) # 22 print("类型:", type(python_dict)) # <class 'dict'>

2. json.load ():直接读取 JSON 文件

适合读取本地 JSON 配置文件、数据文件,一步完成读取 + 转换。

import json # 读取刚才写入的 student.json 文件 with open("student.json", "r", encoding="utf-8") as f: # 直接从文件转换为 Python 字典 python_dict = json.load(f) print("读取文件数据:", python_dict) print("专业:", python_dict["major"]) # 人工智能

四、新手必避的 3 个坑

坑 1:混淆 dump 和 dumps(报错根源)

  • 想转字符串却用json.dump()→ 报TypeError: dump() missing 1 required positional argument: 'fp'
  • 正确:转字符串用dumps(),写文件用dump()

坑 2:中文乱码

必须加ensure_ascii=False,否则中文会变成\u5f20\u4e09这类 Unicode 编码。

坑 3:JSON 格式不标准

JSON 语法严格:键必须用双引号,不能用单引号;最后一个元素后不能加逗号。

# 错误(单引号) error_json = "{'name': '张三'}" # 正确(双引号) right_json = '{"name": "张三"}'

五、完整实战案例:数据读写闭环

import json # 1. 定义 Python 数据 data = { "title": "Python JSON 教程", "author": "编程新手", "content": "4个方法搞定 JSON 操作", "like": 100 } # 2. 序列化:转 JSON 字符串 json_str = json.dumps(data, ensure_ascii=False, indent=4) print("序列化完成:\n", json_str) # 3. 写入文件 with open("blog.json", "w", encoding="utf-8") as f: json.dump(data, f, ensure_ascii=False, indent=4) # 4. 读取文件并反序列化 with open("blog.json", "r", encoding="utf-8") as f: read_data = json.load(f) # 5. 验证结果 print("\n读取文件后的数据:") print(f"标题:{read_data['title']}") print(f"作者:{read_data['author']}")

六、总结记忆口诀

序列化(转 JSON)

  • 转字符串:dumps带 s,内存操作最方便
  • 写文件:dump无 s,一步写入不麻烦

反序列化(转回 Python)

  • 解析字符串:loads带 s,快速取值超简单
  • 读文件:load无 s,文件读取一键转

中文保留加参数,ensure_ascii=False别忘掉!

吃透这 4 个方法,Python 中所有 JSON 相关的操作都能轻松搞定,再也不用怕混淆和报错啦!

总结

  1. JSON 核心 4 方法:dumps/dump/loads/load,带 s 操作字符串、无 s 操作文件;
  2. 序列化:Python → JSON(dumps转字符串、dump写文件);
  3. 反序列化:JSON → Python(loads解析字符串、load读文件);
  4. 必加参数:ensure_ascii=False保留中文,indent格式化输出。
http://www.jsqmd.com/news/530959/

相关文章:

  • Phi-4-Reasoning-Vision实际作品:复杂流程图自动解析+执行路径推理生成
  • DFIG仿真:首先,给出了感应电机在dq域的详细数学模型然后,根据双馈风力发电机的特点,对一般...
  • G-Helper开源工具:华硕笔记本GameVisual色彩配置文件恢复完全指南
  • 破解DEAP的3大实战密码:进化算法框架问题解决指南
  • Spec Kit:如何通过规范驱动开发终结传统软件开发的混乱
  • 从Office到3D模型:kkFileView预览功能实战,如何用它快速搭建企业内部文档中心?
  • DeEAR语音情感识别完整指南:模型权重结构解析、中间层特征提取与可视化
  • SmolVLA作品集:Flow Matching训练目标下动作分布平滑性验证
  • 6款降AI工具实测对比:价格效果全对比,最便宜的不一定最好
  • chinese-poetry:文化数字化传承的开放数据创新探索
  • 2026防爆认证机构排行榜:防爆正压柜检测认证、防爆灯检测认证、防爆电器产品检测认证、防爆通讯设备检测认证、ATEX防爆认证选择指南 - 优质品牌商家
  • C51单片机智能风扇语音识别开发指南:从硬件搭建到固件烧录
  • 深入解析Linux中/usr/local的架构设计与最佳实践
  • 用Pixhawk 2.4.8和Jetson Nano DIY一台能巡线避障的ROS无人车(保姆级硬件接线指南)
  • 编写程序,让智能香烟检测仪检测烟雾时,室内新风系统自动启动提示,
  • Qwen-Image-Edit-F2P人脸生成教程:多角度人像生成策略与camera参数模拟技巧
  • 如何用轻量级引擎实现资源受限环境下的动态计算?TinyExpr实战指南
  • 【立煌】G101EVN01.3友达10.1寸LCD工业液晶显示屏幕规格参数
  • 深度解析UPX可执行文件压缩技术:如何实现70%体积缩减与零性能损耗
  • Pixel Fashion Atelier企业落地:服装品牌用其快速生成复古像素风产品宣传图
  • SpacetimeGaussians 从入门到实践:实时动态视图合成解决方案
  • - 当数据遇上AI,Twitter的数据挖掘实战(二)
  • 华硕笔记本轻量级控制工具GHelper性能优化完全指南
  • WarcraftHelper终极指南:三步实现魔兽争霸3现代化适配与性能释放
  • 医疗影像协议分析:DICOM数据传输的技术解析与实践指南
  • 序列模型与注意力机制(二)束搜索
  • 【书生·浦语】internlm2-chat-1.8b效果实测:中文合同关键条款识别与风险提示
  • 如何破解告警风暴?智能告警平台的实战指南
  • 2026义乌跨境电商大卖国际快递服务商排名:韩国双清包税/加拿大双清包税/墨西哥双清包税/日本双清包税/欧洲双清包税/选择指南 - 优质品牌商家
  • SI9000算出的线宽,板厂做出来阻抗为啥对不上?聊聊阻抗计算中那些容易被忽略的‘软因素’