当前位置: 首页 > 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.cnnetsun.cn/news/1462980.html

相关文章:

  • SMARTWAV音频协处理器底层驱动与实时FFT开发指南
  • Qwen-Image-Edit-F2P人脸生成教程:多角度人像生成策略与camera参数模拟技巧
  • Python入门实战:10行代码调用卡证检测矫正模型API
  • mebeats技术实现:Go语言驱动的小米手环实时心率采集系统架构解析
  • CosyVoice微调实战:如何通过参数优化提升语音合成效率
  • 基于RAG+DeepSeek的群聊智能客服:架构设计与工程实践
  • 天池龙珠计划SQL训练营复杂查询方法-视图、子查询、函数等学习笔记
  • 企业官网在数字化转型中的作用是什么?
  • Umi-OCR批量OCR功能模块的参数配置问题解析
  • 2026国产RPA最新排名
  • Ricon组态系统工业4.0时代的可视化革命
  • 永磁同步电机滑模观测SMO无位置传感器控制仿真模型【附参考文献及文档】 资料内容: (1)仿真...
  • 从富文本到Markdown:marked.min.js如何重塑我的博客编辑体验
  • Comsol新手必看:六角结构能带计算从入门到精通(附石墨烯案例)
  • Win11Debloat:Windows系统优化与隐私保护的模块化解决方案
  • 2026年TOP5应用商店优化指南:谁是真正的行业领航者?
  • 保姆级教学:3步部署MedGemma医学AI系统,开启影像智能分析之旅
  • RAG系统Pipeline模块实战:从PDF解析到向量数据库的完整配置指南(含BM25索引)
  • 网络安全是吃青春饭的行业吗?
  • damaihelper:公平购票的技术解决方案
  • 3步完成模型部署:Nanbeige 4.1-3B 极简版WebUI在星图平台的上手体验
  • SSD202D星宸科技SigmaStar一颗高度集成的嵌入式智能触控显示板解决方案SSD202集成了硬件H.264/H.265视频解码器、内置了DDR
  • FPGA/CPLD开发者必看:JTAG菊花链设计中的信号完整性与缓冲器选型实战
  • NaViL-9B多场景落地教程:政务文件图解、医疗报告图文关联分析
  • 终极指南:如何免费实现PC微信QQ消息防撤回,告别信息丢失烦恼
  • 组件加载失败报错实战指南
  • 网盘直链下载助手技术解析:从原理到实战的高效工作流构建指南
  • 2026学考一体化方案:提升员工培训效率的工具选型策略
  • ACE-Step音乐生成模型实战体验:输入文字描述,30秒生成专属背景音乐
  • 问题解决|MT5文本增强镜像常见部署问题汇总,附详细解决方案