news 2026/4/26 20:23:52

实战必备!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/26 20:23:51

Qwen3-Embedding-0.6B成本优化案例:中小企业低算力部署方案

Qwen3-Embedding-0.6B成本优化案例&#xff1a;中小企业低算力部署方案 1. 背景与需求&#xff1a;为什么选择Qwen3-Embedding-0.6B&#xff1f; 在当前AI模型快速发展的背景下&#xff0c;越来越多企业希望将大模型能力融入自身业务系统。然而&#xff0c;对于大多数中小企业…

作者头像 李华
网站建设 2026/4/26 20:23:51

Google Drive受保护PDF下载工具:2025年最佳文档管理解决方案

Google Drive受保护PDF下载工具&#xff1a;2025年最佳文档管理解决方案 【免费下载链接】Google-Drive-PDF-Downloader 项目地址: https://gitcode.com/gh_mirrors/go/Google-Drive-PDF-Downloader 你是否曾在Google Drive上找到一份重要的PDF文档&#xff0c;却发现它…

作者头像 李华
网站建设 2026/4/26 20:22:40

抖音直播保存终极指南:5分钟学会永久收藏主播精彩内容

抖音直播保存终极指南&#xff1a;5分钟学会永久收藏主播精彩内容 【免费下载链接】douyin-downloader 项目地址: https://gitcode.com/GitHub_Trending/do/douyin-downloader 你是否曾经为错过心爱主播的精彩直播而遗憾&#xff1f;当直播结束后&#xff0c;那些精彩的…

作者头像 李华
网站建设 2026/4/25 21:10:29

3分钟掌握网盘直链秘籍:告别下载龟速的终极方案

3分钟掌握网盘直链秘籍&#xff1a;告别下载龟速的终极方案 【免费下载链接】Online-disk-direct-link-download-assistant 可以获取网盘文件真实下载地址。基于【网盘直链下载助手】修改&#xff08;改自6.1.4版本&#xff09; &#xff0c;自用&#xff0c;去推广&#xff0c…

作者头像 李华
网站建设 2026/4/17 16:37:01

Qwen3-Embedding-0.6B从零开始:新手友好型部署教程

Qwen3-Embedding-0.6B从零开始&#xff1a;新手友好型部署教程 你是否正在寻找一个轻量级、高效且易于部署的文本嵌入模型&#xff1f;Qwen3-Embedding-0.6B 正是为此而生。它不仅继承了 Qwen3 系列强大的语言理解能力&#xff0c;还专为嵌入和排序任务优化&#xff0c;在保持…

作者头像 李华
网站建设 2026/4/25 0:12:01

鸣潮自动化终极指南:游戏效率革命性提升方案

鸣潮自动化终极指南&#xff1a;游戏效率革命性提升方案 【免费下载链接】ok-wuthering-waves 鸣潮 后台自动战斗 自动刷声骸上锁合成 自动肉鸽 Automation for Wuthering Waves 项目地址: https://gitcode.com/GitHub_Trending/ok/ok-wuthering-waves 还在为游戏中的重…

作者头像 李华