

Python入门:Python3 JSON数据解析全面学习教程
Python入门:Python3 JSON数据解析全面学习教程,该教程围绕 Python3 处理 JSON 数据展开,先介绍 JSON 作为轻量级数据交换格式的重要性及核心类型,再聚焦json模块四大核心函数(dumps、loads、dump、load)的用途与区别。重点梳理 Python 与 JSON 类型的双向映射关系,通过三个实战案例(Python 数据转 JSON 字符串、JSON 字符串转 Python 数据、Python 数据与 JSON 文件交互),结合代码演示和结果分析,详解编解码操作。还提及常见问题(数据类型不匹配、文件编码问题)及解决办法,最后提供官方文档作为扩展学习资源,助力读者掌握 Python 处理 JSON 数据的核心技能,应对 API 交互、配置文件处理等实际场景需求。

前言
Python作为一门简洁、易读、功能强大的编程语言,其基础语法是入门学习的核心。掌握好基础语法,能为后续的编程实践打下坚实的基础。本文将全面讲解Python3的基础语法知识,适合编程初学者系统学习。Python以其简洁优雅的语法和强大的通用性,成为当今最受欢迎的编程语言。本专栏旨在系统性地带你从零基础入门到精通Python核心。无论你是零基础小白还是希望进阶的专业开发者,都将通过清晰的讲解、丰富的实例和实战项目,逐步掌握语法基础、核心数据结构、函数与模块、面向对象编程、文件处理、主流库应用(如数据分析、Web开发、自动化)以及面向对象高级特性,最终具备独立开发能力和解决复杂问题的思维,高效应对数据分析、人工智能、Web应用、自动化脚本等广泛领域的实际需求。


🥇 点击进入Python入门专栏,Python凭借简洁易读的语法,是零基础学习编程的理想选择。本专栏专为初学者设计,系统讲解Python核心基础:变量、数据类型、流程控制、函数、文件操作及常用库入门。通过清晰示例与实用小项目,助你快速掌握编程思维,打下坚实根基,迈出自动化办公、数据分析或Web开发的第一步。
🥇 点击进入Python小游戏实战专栏, 寓教于乐,用Python亲手打造经典小游戏!本专栏通过开发贪吃蛇、飞机大战、猜数字、简易版俄罗斯方块等趣味项目,在实践中掌握Python核心语法、面向对象编程、事件处理、图形界面(如Pygame)等关键技能,将枯燥的代码学习转化为可见的成果,让学习编程充满乐趣与成就感,快速提升实战能力。
🥇 点击进入Python小工具实战专栏,告别重复劳动,用Python打造效率神器!本专栏教你开发文件批量处理、自动邮件通知、简易爬虫、桌面提醒、密码生成器、天气查询等实用小工具。聚焦os、shutil、requests、smtplib、schedule等核心库,通过真实场景案例,快速掌握自动化脚本编写技巧,解放双手,显著提升工作与生活效率,让代码真正服务于你的日常。
🥇 点击进入Python爬虫实战专栏,解锁网络数据宝库!本专栏手把手教你使用Python核心库(如requests、BeautifulSoup、Scrapy)构建高效爬虫。从基础网页解析到动态页面抓取、数据存储(CSV/数据库)、反爬策略应对及IP代理使用,通过实战项目(如电商比价、新闻聚合、图片采集、舆情监控),掌握合法合规获取并利用网络数据的核心技能,让数据成为你的超能力。
🥇 点击进入Python项目实战专栏,告别碎片化学习,挑战真实项目!本专栏精选Web应用开发(Flask/Django)、数据分析可视化、自动化办公系统、简易爬虫框架、API接口开发等综合项目。通过需求分析、架构设计、编码实现、测试部署的全流程,深入掌握工程化开发、代码复用、调试排错与团队协作核心能力,积累高质量作品集,真正具备解决复杂问题的Python实战经验。

🌐 前篇文章咱们练习了 Python入门:Python3 XML 解析全面学习教程 ,如果忘记了,可以去重温一下,不停的重复敲击基础代码,有助于让你更加熟练掌握一门语言。今天咱们继续学习 ,Python3 JSON数据解析全面学习教程,下面开始吧!
在当今的数据交换场景中,JSON(JavaScript Object Notation)凭借其轻量级、易读易写的特性,成为了前后端交互、API数据传输的主流格式。而Python作为数据分析和后端开发的热门语言,内置了json模块来高效处理JSON数据。本文将从JSON基础概念入手,详细讲解Python3中json模块的核心函数用法,结合实例帮助你快速掌握JSON数据的编解码技巧。
一、JSON基础:为什么它如此重要?
JSON是一种基于文本的轻量级数据交换格式,它源于JavaScript,但如今已成为跨语言、跨平台的数据交换标准。相比于XML,JSON语法更简洁、解析速度更快,非常适合传输结构化数据(如用户信息、接口返回结果等)。
如果你对JSON语法尚不熟悉,可以先了解其核心数据类型:
- 对象(对应Python的字典):用
{key: value}表示,键值对之间用逗号分隔 - 数组(对应Python的列表):用
[value1, value2, ...]表示 - 基本类型:字符串(双引号包裹)、数字(整数/浮点数)、布尔值(
true/false)、空值(null)
二、Python3 json模块核心函数
Python3的标准库json模块提供了4个核心函数,分别用于字符串级别的编解码和文件级别的编解码,覆盖了绝大多数JSON处理场景。
| 函数用途 | 函数名 | 核心作用 |
|---|---|---|
| Python数据编码为JSON字符串 | json.dumps() | 将Python原生数据类型转换为JSON格式字符串 |
| JSON字符串解码为Python数据 | json.loads() | 将JSON格式字符串转换为Python原生数据类型 |
| Python数据写入JSON文件 | json.dump() | 将Python数据直接写入文件(JSON格式) |
| 从JSON文件读取Python数据 | json.load() | 从JSON文件中读取数据并转换为Python类型 |
三、关键知识点:Python与JSON类型对应关系
在编解码过程中,Python原生类型与JSON类型会自动转换,理解对应关系是避免数据异常的关键。
1. Python编码为JSON的类型映射
当使用json.dumps()或json.dump()时,Python数据会按照以下规则转换为JSON类型:
| Python原生类型 | 转换后的JSON类型 | 示例 |
|---|---|---|
dict(字典) | object(对象) | {'name': 'xcLeigh'} → {"name": "xcLeigh"} |
list(列表)、tuple(元组) | array(数组) | [1, 2, 3] → [1,2,3];(1,2,3) → [1,2,3] |
str(字符串) | string(字符串) | "Python" → "Python" |
int/float(整数/浮点数) | number(数字) | 100 → 100;3.14 → 3.14 |
True(布尔值) | true | True → true |
False(布尔值) | false | False → false |
None(空值) | null | None → null |
2. JSON解码为Python的类型映射
当使用json.loads()或json.load()时,JSON类型会按照以下规则转换为Python类型:
| JSON类型 | 转换后的Python类型 | 示例 |
|---|---|---|
object(对象) | dict(字典) | {"no": 1} → {'no': 1} |
array(数组) | list(列表) | ["xcLeigh", "Python"] → ['xcLeigh', 'Python'] |
string(字符串) | str(字符串) | "https://xcleigh.blog.csdn.net/" → "https://xcleigh.blog.csdn.net/" |
number(int)(整数) | int(整数) | 10 → 10 |
number(real)(浮点数) | float(浮点数) | 3.14 → 3.14 |
true | True | true → True |
false | False | false → False |
null | None | null → None |
四、实战案例:从字符串到文件的完整操作
理论结合实践才能快速掌握,下面通过3个递进的案例,演示json模块的核心用法。
案例1:Python数据编码为JSON字符串(json.dumps())
将Python字典(最常用的结构化数据类型)转换为JSON字符串,方便后续传输或存储。
#!/usr/bin/python3
import json
# 1. 定义Python字典(原始数据)
data = {
'no': 1,
'name': 'xcLeigh',
'url': 'https://xcleigh.blog.csdn.net/',
'is_active': True,
'tags': ['Python', 'JSON', '教程'],
'score': 98.5,
'extra_info': None
}
# 2. 使用json.dumps()编码为JSON字符串
json_str = json.dumps(data)
# 3. 打印结果对比
print("Python原始数据(字典类型):", repr(data))
print("JSON字符串(类型):", json_str)
print("JSON字符串的类型:", type(json_str)) # 输出 <class 'str'>
运行结果:
Python原始数据(字典类型): {'no': 1, 'name': 'xcLeigh', 'url': 'https://xcleigh.blog.csdn.net/', 'is_active': True, 'tags': ['Python', 'JSON', '教程'], 'score': 98.5, 'extra_info': None}
JSON字符串(类型): {"no": 1, "name": "xcLeigh", "url": "https://xcleigh.blog.csdn.net/", "is_active": true, "tags": ["Python", "JSON", "教程"], "score": 98.5, "extra_info": null}
JSON字符串的类型: <class 'str'>

关键说明:
- Python的
True转换为JSON的true,None转换为null(JSON语法要求小写) - Python字典的键是字符串时,JSON字符串的键会自动用双引号包裹(JSON键必须是双引号字符串)
案例2:JSON字符串解码为Python数据(json.loads())
将API返回的JSON字符串(或前端传递的JSON数据)转换为Python字典,方便后续数据处理(如提取字段、计算等)。
#!/usr/bin/python3
import json
# 1. 模拟一个JSON字符串(例如API返回结果)
json_str = '''
{
"no": 1,
"name": "xcLeigh",
"url": "https://xcleigh.blog.csdn.net/",
"is_active": true,
"tags": ["Python", "JSON", "教程"],
"score": 98.5,
"extra_info": null
}
'''
# 2. 使用json.loads()解码为Python字典
data = json.loads(json_str)
# 3. 提取并使用数据
print("解码后的Python数据类型:", type(data)) # 输出 <class 'dict'>
print("网站名称:", data['name']) # 输出 xcLeigh
print("网站URL:", data['url']) # 输出 https://xcleigh.blog.csdn.net/
print("是否活跃:", data['is_active']) # 输出 True
print("标签列表:", data['tags'][0]) # 输出 Python(提取列表第一个元素)
运行结果:
解码后的Python数据类型: <class 'dict'>
网站名称: xcLeigh
网站URL:https://xcleigh.blog.csdn.net/
是否活跃: True
标签列表: Python
关键说明:
- JSON字符串中的
true会转换为Python的True,null转换为None - 解码后的数据可以直接用Python字典的语法操作(如
data['key']提取值)
案例3:Python数据与JSON文件的交互(json.dump()/json.load())
当需要持久化存储JSON数据(如配置文件、日志数据)时,直接使用json.dump()和json.load()操作文件,无需手动处理字符串写入/读取。
步骤1:将Python数据写入JSON文件(json.dump())
#!/usr/bin/python3
import json
# 1. 定义Python数据
data = {
'no': 1,
'name': 'xcLeigh',
'url': 'https://xcleigh.blog.csdn.net/',
'tags': ['Python', 'JSON']
}
# 2. 使用with语句打开文件,自动管理文件关闭
with open('data.json', 'w', encoding='utf-8') as f:
# json.dump(数据, 文件对象)
json.dump(data, f, ensure_ascii=False, indent=4)
print("JSON数据已成功写入data.json文件")
参数说明:
ensure_ascii=False:允许写入非ASCII字符(如中文),避免乱码indent=4:格式化输出,缩进4个空格,增强文件可读性
运行后会生成data.json文件,内容如下:
{
"no": 1,
"name": "xcLeigh",
"url": "https://xcleigh.blog.csdn.net/",
"tags": [
"Python",
"JSON"
]
}
步骤2:从JSON文件读取数据(json.load())
#!/usr/bin/python3
import json
# 1. 使用with语句读取文件
with open('data.json', 'r', encoding='utf-8') as f:
# json.load(文件对象):读取文件并解码为Python数据
data = json.load(f)
# 2. 使用读取到的数据
print("从文件读取的Python数据:", data)
print("网站名称:", data['name'])
print("标签数量:", len(data['tags']))
运行结果:
从文件读取的Python数据: {'no': 1, 'name': 'xcLeigh', 'url': 'https://xcleigh.blog.csdn.net/', 'tags': ['Python', 'JSON']}
网站名称: xcLeigh
标签数量: 2
五、常见问题与注意事项
-
数据类型不匹配错误:
若Python数据中包含json模块不支持的类型(如datetime对象、自定义类实例),直接编码会报错。解决方案:自定义default参数(如json.dumps(data, default=str)将不支持的类型转为字符串)。 -
文件编码问题:
写入/读取JSON文件时,务必指定encoding='utf-8',否则中文等非ASCII字符可能出现乱码。 -
dumps与dump、loads与load的区别:- 带
s的函数(dumps/loads):操作字符串,适用于内存中的数据处理(如API交互)。 - 不带
s的函数(dump/load):操作文件对象,适用于文件持久化存储。
- 带
六、扩展学习资源
本文仅覆盖json模块的核心用法,如需深入了解高级特性(如自定义编码器、参数配置),可参考以下官方文档:
Python3 json模块官方文档
通过本文的学习,你已经掌握了Python3处理JSON数据的全部核心技能——从字符串编解码到文件交互。在实际开发中,无论是对接API、处理配置文件,还是传输结构化数据,这些技巧都能帮你高效解决问题。赶紧动手实践,尝试用json模块处理你的第一个JSON数据吧!
💡下一篇咱们学习 Python入门:Python3 日期和时间全面学习教程!
附录:扩展学习资源
- 官方资源:
- Python官网:https://www.python.org
- PyPI:https://pypi.org(查找第三方库)
- 安装包等相关文件(另附带pycharm工具),网盘下载地址:https://pan.quark.cn/s/649af731037c
- 学习资料视频和文档资源,网盘下载地址: https://pan.quark.cn/s/ee16901a8954
- 本专栏特色资源:
- 代码资源仓库:CSDN专属资源在线获取
- 海量Python教程:关注公众号:xcLeigh,获取网盘地址
- 一对一答疑:添加微信与博主在线沟通(
备注“Python专栏”)
联系博主
xcLeigh 博主,全栈领域优质创作者,博客专家,目前,活跃在CSDN、微信公众号、小红书、知乎、掘金、快手、思否、微博、51CTO、B站、腾讯云开发者社区、阿里云开发者社区等平台,全网拥有几十万的粉丝,全网统一IP为 xcLeigh。希望通过我的分享,让大家能在喜悦的情况下收获到有用的知识。主要分享编程、开发工具、算法、技术学习心得等内容。很多读者评价他的文章简洁易懂,尤其对于一些复杂的技术话题,他能通过通俗的语言来解释,帮助初学者更好地理解。博客通常也会涉及一些实践经验,项目分享以及解决实际开发中遇到的问题。如果你是开发领域的初学者,或者在学习一些新的编程语言或框架,关注他的文章对你有很大帮助。
亲爱的朋友,无论前路如何漫长与崎岖,都请怀揣梦想的火种,因为在生活的广袤星空中,总有一颗属于你的璀璨星辰在熠熠生辉,静候你抵达。
愿你在这纷繁世间,能时常收获微小而确定的幸福,如春日微风轻拂面庞,所有的疲惫与烦恼都能被温柔以待,内心永远充盈着安宁与慰藉。
至此,文章已至尾声,而您的故事仍在续写,不知您对文中所叙有何独特见解?期待您在心中与我对话,开启思想的新交流。
💞 关注博主 🌀 带你实现畅游前后端!
🏰 大屏可视化 🌀 带你体验酷炫大屏!
💯 神秘个人简介 🌀 带你体验不一样得介绍!
🥇 从零到一学习Python 🌀 带你玩转Python技术流!
🏆 前沿应用深度测评 🌀 前沿AI产品热门应用在线等你来发掘!
💦 注:本文撰写于CSDN平台,作者:xcLeigh(所有权归作者所有) ,https://xcleigh.blog.csdn.net/,如果相关下载没有跳转,请查看这个地址,相关链接没有跳转,皆是抄袭本文,转载请备注本文原地址。

📣 亲,码字不易,动动小手,欢迎 点赞 ➕ 收藏,如 🈶 问题请留言(或者关注下方公众号,看见后第一时间回复,还有海量编程资料等你来领!),博主看见后一定及时给您答复 💌💌💌
转载自CSDN-专业IT技术社区
原文链接:https://blog.csdn.net/weixin_43151418/article/details/150861985



