news 2026/4/29 13:49:00

实战必备!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/29 11:28:51

MyTV智能电视直播系统技术深度剖析与实践应用

MyTV智能电视直播系统技术深度剖析与实践应用 【免费下载链接】mytv-android 使用Android原生开发的电视直播软件 项目地址: https://gitcode.com/gh_mirrors/my/mytv-android 智能电视时代的技术困境与破局之道 当我们翻开智能电视的发展史&#xff0c;一个令人深思的…

作者头像 李华
网站建设 2026/4/18 9:58:09

Z-Image-Turbo如何助力内容创作者提效?

Z-Image-Turbo如何助力内容创作者提效&#xff1f; 在内容为王的时代&#xff0c;视觉素材的生产效率直接决定了创作节奏。无论是社交媒体配图、电商主图、还是短视频封面&#xff0c;高质量图像的生成速度和可控性都成为创作者的核心痛点。传统AI绘画工具虽然能出图&#xff…

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

VibeThinker-1.5B-WEBUI实测报告:代码生成任务表现分析

VibeThinker-1.5B-WEBUI实测报告&#xff1a;代码生成任务表现分析 1. 模型背景与核心亮点 VibeThinker-1.5B-WEBUI 是基于微博开源的小参数语言模型 VibeThinker-1.5B 打造的交互式推理界面&#xff0c;专为数学和编程任务设计。尽管其参数量仅为15亿&#xff0c;属于典型的…

作者头像 李华
网站建设 2026/4/28 1:51:29

3步搞定抖音无水印下载:技术流的高效内容保存方案

3步搞定抖音无水印下载&#xff1a;技术流的高效内容保存方案 【免费下载链接】douyin-downloader 项目地址: https://gitcode.com/GitHub_Trending/do/douyin-downloader 在内容创作和数据采集需求日益增长的今天&#xff0c;如何快速保存抖音平台的优质内容成为技术爱…

作者头像 李华
网站建设 2026/4/29 13:26:33

Qwen3-Embedding-0.6B电商搜索优化案例:文本检索准确率提升50%

Qwen3-Embedding-0.6B电商搜索优化案例&#xff1a;文本检索准确率提升50% 在电商平台中&#xff0c;用户搜索的准确性直接决定了转化率和用户体验。传统的关键词匹配方式难以理解语义&#xff0c;经常出现“搜得到但不对路”的尴尬情况。而随着大模型技术的发展&#xff0c;语…

作者头像 李华
网站建设 2026/4/25 3:11:17

AMD Ryzen硬件调试专家指南:SMUDebugTool深度应用手册

AMD Ryzen硬件调试专家指南&#xff1a;SMUDebugTool深度应用手册 【免费下载链接】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://gi…

作者头像 李华