news 2026/4/25 0:13:17

实战必备!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/4/24 0:24:30

单机游戏分屏协作革命:Nucleus Co-Op技术深度解读

单机游戏分屏协作革命&#xff1a;Nucleus Co-Op技术深度解读 【免费下载链接】nucleuscoop Starts multiple instances of a game for split-screen multiplayer gaming! 项目地址: https://gitcode.com/gh_mirrors/nu/nucleuscoop 你是否曾经想过&#xff0c;为什么那…

作者头像 李华
网站建设 2026/4/22 23:44:42

游戏串流平台深度重构创作指南

游戏串流平台深度重构创作指南 【免费下载链接】Sunshine Sunshine: Sunshine是一个自托管的游戏流媒体服务器&#xff0c;支持通过Moonlight在各种设备上进行低延迟的游戏串流。 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine 核心任务定位 你是一位专业…

作者头像 李华
网站建设 2026/4/22 2:58:52

噪声误判成语音?调整这个参数立马解决FSMN VAD问题

噪声误判成语音&#xff1f;调整这个参数立马解决FSMN VAD问题 在使用语音活动检测&#xff08;VAD&#xff09;模型处理音频时&#xff0c;你是否遇到过这样的困扰&#xff1a;明明是背景噪声、键盘敲击声甚至空调风声&#xff0c;系统却把它识别成了“有效语音”&#xff1f…

作者头像 李华
网站建设 2026/4/23 17:12:19

DockDoor窗口管理引擎:macOS多任务工作流的技术革新

DockDoor窗口管理引擎&#xff1a;macOS多任务工作流的技术革新 【免费下载链接】DockDoor Window peeking for macOS 项目地址: https://gitcode.com/gh_mirrors/do/DockDoor 引擎架构设计理念 现代操作系统在多窗口环境下的用户体验存在显著的技术瓶颈。传统窗口管理…

作者头像 李华
网站建设 2026/4/21 1:45:11

鸣潮自动化工具全面解析:从新手到高手的效率革命

鸣潮自动化工具全面解析&#xff1a;从新手到高手的效率革命 【免费下载链接】ok-wuthering-waves 鸣潮 后台自动战斗 自动刷声骸上锁合成 自动肉鸽 Automation for Wuthering Waves 项目地址: https://gitcode.com/GitHub_Trending/ok/ok-wuthering-waves 在当今快节奏…

作者头像 李华
网站建设 2026/4/23 10:03:58

终极AMD Ryzen调优指南:5分钟掌握系统性能优化

终极AMD Ryzen调优指南&#xff1a;5分钟掌握系统性能优化 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: https://gitcode.c…

作者头像 李华