Python中如何读取JSON文件内容
在Python开发中,JSON(JavaScript Object Notation)是一种常用的轻量级数据交换格式,因其易读性强、结构灵活,被广泛应用于配置文件、API数据交互等场景,如何在Python中读取JSON文件内容是基础且重要的技能,本文将详细介绍使用Python读取JSON文件的完整方法,包括内置模块的使用、常见错误处理及实际示例。
Python读取JSON文件的核心工具:json模块
Python标准库提供了json模块,专门用于处理JSON数据的编码与解码,该模块的load()和loads()函数是读取JSON的核心方法:
json.load(file_object):从文件对象中读取JSON数据,并转换为Python对象(如字典、列表等)。json.loads(json_str):从JSON格式字符串中读取数据,转换为Python对象(适用于已将JSON文件内容读入字符串的场景)。
读取JSON文件时,通常使用json.load()更直接,无需手动读取文件内容。
读取JSON文件的完整步骤
准备JSON文件
假设有一个名为data.json的JSON文件,内容如下(存储在项目根目录下):
{
"name": "张三",
"age": 25,
"is_student": false,
"courses": ["Python", "JavaScript", "SQL"],
"address": {
"city": "北京",
"district": "海淀区"
}
}
打开文件并读取JSON数据
使用with open()语句打开文件(推荐方式,可自动关闭文件),并通过json.load()解析JSON内容,代码如下:
import json
# 打开JSON文件并读取内容
with open('data.json', 'r', encoding='utf-8') as file:
data = json.load(file)
# 打印解析后的Python对象
print(data)
print("类型:", type(data))
输出结果:
{'name': '张三', 'age': 25, 'is_student': False, 'courses': ['Python', 'JavaScript', 'SQL'], 'address': {'city': '北京', 'district': '海淀区'}}
类型: <class 'dict'>
可以看到,JSON对象被成功转换为Python的字典(dict),其中JSON的数组([])转换为Python列表(list),布尔值(true/false)转换为True/False,字符串保持不变。
访问解析后的数据
解析后的Python对象可直接通过键(字典)或索引(列表)访问数据:
# 访问字典中的值
print("姓名:", data['name']) # 输出: 姓名: 张三
print("年龄:", data['age']) # 输出: 年龄: 25
print("是否学生:", data['is_student']) # 输出: 是否学生: False
# 访问嵌套字典
print("城市:", data['address']['city']) # 输出: 城市: 北京
# 访问列表
print("课程列表:", data['courses']) # 输出: 课程列表: ['Python', 'JavaScript', 'SQL']
print("第一门课程:", data['courses'][0]) # 输出: 第一门课程: Python
常见错误及处理
文件不存在:FileNotFoundError
当JSON文件路径错误或文件不存在时,会抛出FileNotFoundError,可通过try-except捕获并提示:
import json
file_path = 'nonexistent.json'
try:
with open(file_path, 'r', encoding='utf-8') as file:
data = json.load(file)
except FileNotFoundError:
print(f"错误:文件 '{file_path}' 不存在,请检查路径!")
JSON格式错误:json.JSONDecodeError
如果JSON文件内容格式不正确(如缺少引号、逗号,或括号不匹配),json.load()会抛出json.JSONDecodeError,需确保文件内容符合JSON规范:
import json
# 假设 malformed.json 内容为:{"name": "李四", "age": 30,} # 末尾多了一个逗号
try:
with open('malformed.json', 'r', encoding='utf-8') as file:
data = json.load(file)
except json.JSONDecodeError as e:
print(f"JSON格式错误:{e}")
文件编码问题
JSON文件通常使用UTF-8编码,若文件包含非UTF-8字符(如中文)且未指定编码,可能导致解码错误,建议始终在open()中明确encoding='utf-8'。
进阶场景:从字符串读取JSON(json.loads())
如果JSON数据已作为字符串存在(例如从网络API获取或用户输入),可使用json.loads()解析:
import json
json_str = '{"name": "王五", "age": 28, "hobbies": ["阅读", "旅行"]}'
data = json.loads(json_str) # 从字符串解析
print("姓名:", data['name']) # 输出: 姓名: 王五
print("爱好:", data['hobbies']) # 输出: 爱好: ['阅读', '旅行']
读取JSON文件是Python数据处理的基础操作,核心步骤如下:
- 导入
json模块; - 使用
with open()以utf-8编码打开JSON文件; - 通过
json.load(file)解析为Python对象; - 访问解析后的数据(字典/列表);
- 处理可能的文件不存在或格式错误异常。
这些方法后,你可以轻松处理配置文件、API响应等JSON格式的数据,为后续的数据分析、存储或展示奠定基础。



还没有评论,来说两句吧...