news 2026/4/22 12:17:09

实战必备!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/18 5:24:20

一键启动.sh使用说明,Z-Image部署超简单

一键启动.sh使用说明&#xff0c;Z-Image部署超简单 你是不是也经历过这样的时刻&#xff1a;好不容易找到一个强大的AI文生图模型&#xff0c;结果光是部署就花了半天时间&#xff1f;配置环境、下载模型、启动服务……每一步都像在闯关。而现在&#xff0c;这一切都可以被一…

作者头像 李华
网站建设 2026/4/18 7:54:47

网盘直链解析神器:8大平台真实下载地址一键获取指南

网盘直链解析神器&#xff1a;8大平台真实下载地址一键获取指南 【免费下载链接】Online-disk-direct-link-download-assistant 可以获取网盘文件真实下载地址。基于【网盘直链下载助手】修改&#xff08;改自6.1.4版本&#xff09; &#xff0c;自用&#xff0c;去推广&#x…

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

5分钟搞定抖音下载:告别水印困扰的高效保存方案

5分钟搞定抖音下载&#xff1a;告别水印困扰的高效保存方案 【免费下载链接】douyin-downloader 项目地址: https://gitcode.com/GitHub_Trending/do/douyin-downloader 你是否曾遇到过这样的困境&#xff1a;看到精彩的抖音视频想要保存分享&#xff0c;却被平台的水印…

作者头像 李华
网站建设 2026/4/18 5:26:02

Z-Image-Turbo实战教程:Gradio UI界面一键部署详细步骤

Z-Image-Turbo实战教程&#xff1a;Gradio UI界面一键部署详细步骤 你是否还在为复杂的图像生成模型部署流程头疼&#xff1f;Z-Image-Turbo 的出现让这一切变得简单。它不仅具备强大的图像生成能力&#xff0c;还通过集成 Gradio UI 界面&#xff0c;实现了“开箱即用”的便捷…

作者头像 李华
网站建设 2026/4/20 2:38:20

老款Mac性能重生指南:解锁隐藏潜能的终极方案

老款Mac性能重生指南&#xff1a;解锁隐藏潜能的终极方案 【免费下载链接】OpenCore-Legacy-Patcher 体验与之前一样的macOS 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 还在为老款Mac运行缓慢、功能受限而烦恼吗&#xff1f;OpenCore …

作者头像 李华
网站建设 2026/4/18 8:01:45

抖音内容保存终极指南:轻松收藏精彩瞬间的快速上手教程

抖音内容保存终极指南&#xff1a;轻松收藏精彩瞬间的快速上手教程 【免费下载链接】douyin-downloader 项目地址: https://gitcode.com/GitHub_Trending/do/douyin-downloader 你是否曾经被抖音上的精彩内容深深吸引&#xff0c;想要永久保存却无从下手&#xff1f;&a…

作者头像 李华