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应用、自动化脚本等广泛领域的实际需求。一、JSON基础:为什么它如此重要?
JSON是一种基于文本的轻量级数据交换格式,它源于JavaScript,但如今已成为跨语言、跨平台的数据交换标准。相比于XML,JSON语法更简洁、解析速度更快,非常适合传输结构化数据(如用户信息、接口返回结果等)。如果你对JSON语法尚不熟悉,可以先了解其核心数据类型:对象(对应Python的字典):用{key: value}表示,键值对之间用逗号分隔数组(对应Python的列表):用[value1, value2, ...]表示基本类型:字符串(双引号包裹)、数字(整数/浮点数)、布尔值(true/false)、空值(null)二、Python3 json模块核心函数
Python3的标准库json模块提供了4个核心函数,分别用于字符串级别的编解码和文件级别的编解码,覆盖了绝大多数JSON处理场景。三、关键知识点:Python与JSON类型对应关系
在编解码过程中,Python原生类型与JSON类型会自动转换,理解对应关系是避免数据异常的关键。1. Python编码为JSON的类型映射
当使用json.dumps()或json.dump()时,Python数据会按照以下规则转换为JSON类型:2. JSON解码为Python的类型映射
当使用json.loads()或json.load()时,JSON类型会按照以下规则转换为Python类型:
四、实战案例:从字符串到文件的完整操作
理论结合实践才能快速掌握,下面通过3个递进的案例,演示json模块的核心用法。案例1:Python数据编码为JSON字符串(json.dumps())
将Python字典(最常用的结构化数据类型)转换为JSON字符串,方便后续传输或存储。#!/usr/bin/python3import json1. 定义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/python3import json1. 模拟一个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']) # 输出 xcLeighprint("网站URL:", data['url']) # 输出 https://xcleigh.blog.csdn.net/print("是否活跃:", data['is_active']) # 输出 Trueprint("标签列表:", 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/python3import json1. 定义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/python3import json1. 使用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数据的全部核心技能——从字符串编解码到文件交互。在实际开发中,无论是对接API、处理配置文件,还是传输结构化数据,这些技巧都能帮你高效解决问题。赶紧动手实践,尝试用json模块处理你的第一个JSON数据吧!如果你也想学习Python,可以关注我,我会把自己知道的,曾经走过的弯路都告诉你,让你在学习Python的路上更加顺畅。
包括:Python激活码+安装包、Python web开发,Python爬虫,Python数据分析,人工智能、机器学习、Python量化交易等学习教程。带你从零基础系统性的学好Python!
👉Python学习路线汇总👈
👉Python学习视频合集👈
我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。
观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
👉实战案例👈
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
安装包工具+资料获取方式:↓↓↓↓1.关注下方公众号↓↓↓↓