news 2026/6/19 15:47:48

实战必备!Python JSON 库一键搞定数据格式转换

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
实战必备!Python JSON 库一键搞定数据格式转换
模块 1:JSON 库核心认知
  • 什么是 JSON?(简单说:轻量级数据交换格式,键值对结构,和 Python 字典很像但有区别)
  • JSON vs Python 数据类型对应表(用表格更清晰):
    Python 类型JSON 类型注意点
    dictobjectJSON 键必须是字符串,Python 字典键可多样
    list/tuplearray元组转 JSON 会变成数组,转回是列表
    strstringJSON 字符串必须用双引号,Python 可单 / 双
    int/floatnumber无区别
    True/Falsetrue/false大小写差异,JSON 是小写
    Nonenull关键字不同
模块 2:JSON 库核心用法

(每个用法配「代码 + 注释 + 输入输出」,新手能直接复制运行)

1. 序列化:Python 对象 → JSON 字符串(json.dumps ())
import json # 原始Python数据 data = { "name": "张三", "age": 25, "is_student": True, "hobbies": ["编程", "看电影"], "score": None } # 基础序列化 json_str = json.dumps(data) print("基础序列化:", json_str) # 输出:{"name": "\u5f20\u4e09", "age": 25, "is_student": true, "hobbies": ["\u7f16\u7a0b", "\u770b\u7535\u5f71"], "score": null} # 优化:解决中文乱码+格式化输出(重点!) json_str_optimize = json.dumps(data, ensure_ascii=False, indent=4) print("优化后:", json_str_optimize) # 输出: # { # "name": "张三", # "age": 25, # "is_student": true, # "hobbies": [ # "编程", # "看电影" # ], # "score": null # }
2. 反序列化:JSON 字符串 → Python 对象(json.loads ())
# 接上面的json_str_optimize python_data = json.loads(json_str_optimize) print("反序列化后类型:", type(python_data)) # <class 'dict'> print("获取姓名:", python_data["name"]) # 张三 print("获取第一个爱好:", python_data["hobbies"][0]) # 编程
3. 读写 JSON 文件(实战高频)
# 写入JSON文件(解决中文乱码+格式化) with open("data.json", "w", encoding="utf-8") as f: json.dump(data, f, ensure_ascii=False, indent=4) # 读取JSON文件 with open("data.json", "r", encoding="utf-8") as f: load_data = json.load(f) print("读取文件后的数据:", load_data) # 输出和原始data一致
模块 3:实战踩坑指南(最有价值的部分)

(新手常踩的坑,附解决方案)

  1. ❌ 坑 1:中文乱码 → ✅ 解决方案:dumps/dump时加ensure_ascii=False,文件操作指定encoding="utf-8"
  2. ❌ 坑 2:JSON 格式报错(比如单引号 / 尾逗号)→ ✅ 解决方案:JSON 严格要求双引号,且不能有尾逗号,可先用json.tool校验:python -m json.tool 文件名.json
  3. ❌ 坑 3:嵌套 JSON 解析复杂 → ✅ 解决方案:用循环 / 列表推导式逐层解析,示例:
    # 嵌套JSON数据 nest_data = { "class": "Python入门班", "students": [ {"name": "李四", "score": 90}, {"name": "王五", "score": 85} ] } # 提取所有学生姓名 names = [stu["name"] for stu in nest_data["students"]] print("学生姓名:", names) # ['李四', '王五']
  4. ❌ 坑 4:JSON 转 Python 后数据类型不符 → ✅ 解决方案:提前判断类型,比如 JSON 的null转成 Python 的None,需单独处理。
模块 4:进阶用法(可选,提升文章深度)
  • 自定义 JSON 编码器(比如处理 datetime 时间类型):
    from datetime import datetime class DateTimeEncoder(json.JSONEncoder): def default(self, obj): if isinstance(obj, datetime): return obj.strftime("%Y-%m-%d %H:%M:%S") return super().default(obj) # 测试 time_data = {"create_time": datetime.now()} json_time = json.dumps(time_data, cls=DateTimeEncoder, ensure_ascii=False) print("时间序列化:", json_time) # 输出:{"create_time": "2026-01-20 15:30:00"}
  • 结合 requests 库解析接口 JSON 数据(实战场景):
    import requests # 调用公开接口 res = requests.get("https://jsonplaceholder.typicode.com/todos/1") # 直接解析JSON响应 res_json = res.json() # 等价于 json.loads(res.text) print("接口数据:", res_json)
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/18 17:59:59

YOLOv10官方镜像更新日志:新功能使用说明

YOLOv10官方镜像更新日志&#xff1a;新功能使用说明 1. 引言&#xff1a;YOLOv10 镜像为何值得关注 如果你正在寻找一个开箱即用、无需繁琐配置的目标检测解决方案&#xff0c;那么 YOLOv10 官版镜像 就是你需要的工具。这个预构建环境不仅集成了最新的 YOLOv10 模型架构&am…

作者头像 李华
网站建设 2026/6/9 21:31:20

Google Drive受保护PDF下载完整教程:免费高效突破限制终极方案

Google Drive受保护PDF下载完整教程&#xff1a;免费高效突破限制终极方案 【免费下载链接】Google-Drive-PDF-Downloader 项目地址: https://gitcode.com/gh_mirrors/go/Google-Drive-PDF-Downloader 你是否曾遇到过这样的情况&#xff1a;在Google Drive上找到一份重…

作者头像 李华
网站建设 2026/6/18 6:56:50

5分钟快速上手:MyTV安卓电视直播软件终极配置指南 [特殊字符]

5分钟快速上手&#xff1a;MyTV安卓电视直播软件终极配置指南 &#x1f680; 【免费下载链接】mytv-android 使用Android原生开发的电视直播软件 项目地址: https://gitcode.com/gh_mirrors/my/mytv-android 还在为老旧Android电视找不到合适的直播软件而烦恼吗&#xf…

作者头像 李华
网站建设 2026/6/18 1:42:18

WorkshopDL终极指南:无需Steam客户端轻松下载创意工坊模组

WorkshopDL终极指南&#xff1a;无需Steam客户端轻松下载创意工坊模组 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 还在为无法使用Steam创意工坊模组而烦恼吗&#xff1f;Wo…

作者头像 李华
网站建设 2026/6/16 19:51:18

Nucleus Co-Op终极指南:3步实现单机游戏分屏多人联机

Nucleus Co-Op终极指南&#xff1a;3步实现单机游戏分屏多人联机 【免费下载链接】nucleuscoop Starts multiple instances of a game for split-screen multiplayer gaming! 项目地址: https://gitcode.com/gh_mirrors/nu/nucleuscoop 还在为心爱的单机游戏没有本地多人…

作者头像 李华
网站建设 2026/6/19 2:19:26

Linux系统B站客户端超全使用攻略:从安装到玩转隐藏功能

Linux系统B站客户端超全使用攻略&#xff1a;从安装到玩转隐藏功能 【免费下载链接】bilibili-linux 基于哔哩哔哩官方客户端移植的Linux版本 支持漫游 项目地址: https://gitcode.com/gh_mirrors/bi/bilibili-linux 想知道在Linux系统上也能流畅追番、看直播是什么体验…

作者头像 李华