当前位置:首页 > Python > 正文

Python读取JSON文件教程 - 完整指南与示例 | Python数据处理

Python读取JSON文件完全指南

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,在Python中处理JSON文件非常简单。本教程将教你如何使用Python内置的json模块读取JSON文件。

为什么使用JSON?

  • 轻量级且易于阅读的数据格式
  • 与多种编程语言兼容
  • 常用于API数据交换和配置文件
  • Python原生支持,无需额外安装

基本步骤:读取JSON文件

Python读取JSON文件只需三个简单步骤:

  1. 导入内置的json模块
  2. 使用open()函数打开JSON文件
  3. 使用json.load()方法解析文件内容

示例代码:读取简单JSON文件

import json

# 1. 打开JSON文件
with open('data.json', 'r', encoding='utf-8') as file:
    # 2. 加载JSON数据
    data = json.load(file)

# 3. 使用数据
print(data)
print("姓名:", data["name"])
print("年龄:", data["age"])

data.json文件内容

{
    "name": "张三",
    "age": 28,
    "city": "北京",
    "is_student": false,
    "courses": ["Python", "数据分析", "机器学习"]
}

输出结果

{
    'name': '张三', 
    'age': 28, 
    'city': '北京', 
    'is_student': False, 
    'courses': ['Python', '数据分析', '机器学习']
}

姓名: 张三
年龄: 28

处理复杂JSON结构

当JSON数据包含嵌套结构时,我们可以使用递归或逐层访问的方式提取数据。

示例:读取嵌套JSON数据

import json

with open('employees.json', 'r', encoding='utf-8') as file:
    employees = json.load(file)

# 访问嵌套数据
print("公司名称:", employees["company"]["name"])
print("员工总数:", len(employees["employees"]))

# 遍历员工数据
for employee in employees["employees"]:
    print(f"\n员工ID: {employee['id']}")
    print(f"姓名: {employee['name']}")
    print(f"职位: {employee['position']}")
    print("技能:", ", ".join(employee["skills"]))

employees.json文件内容

{
    "company": {
        "name": "科技先锋有限公司",
        "established": 2010
    },
    "employees": [
        {
            "id": 101,
            "name": "李四",
            "position": "高级开发工程师",
            "salary": 25000,
            "skills": ["Python", "Django", "数据库"]
        },
        {
            "id": 102,
            "name": "王芳",
            "position": "数据分析师",
            "salary": 22000,
            "skills": ["Python", "Pandas", "数据可视化"]
        },
        {
            "id": 103,
            "name": "赵明",
            "position": "前端工程师",
            "salary": 20000,
            "skills": ["JavaScript", "React", "CSS"]
        }
    ]
}

处理大型JSON文件

对于大型JSON文件,可以使用json.loads()逐行读取:

逐行读取大型JSON文件

import json

# 适用于每行是一个独立JSON对象的大型文件
data_list = []
with open('large_data.json', 'r', encoding='utf-8') as file:
    for line in file:
        # 解析每一行的JSON对象
        obj = json.loads(line)
        data_list.append(obj)

print(f"成功读取 {len(data_list)} 个JSON对象")

常见问题与解决方案

1. JSONDecodeError: 文件格式错误

使用JSON验证工具检查文件格式,确保没有逗号错误或引号不匹配问题。

2. UnicodeDecodeError: 编码问题

open()函数中指定正确的编码格式,通常使用encoding='utf-8'

3. 处理日期等特殊格式

JSON不支持日期类型,需要将日期字符串转换为datetime对象:

from datetime import datetime

# 转换日期字符串
date_str = data["create_date"]
create_date = datetime.strptime(date_str, "%Y-%m-%d")

最佳实践总结

  • 始终使用with open()语句确保文件正确关闭
  • 指定文件编码(特别是中文内容)
  • 处理大型文件时考虑逐行读取
  • 使用json.dumps(data, indent=4)可以美化输出JSON
  • 验证外部JSON数据来源的可靠性

现在你已经掌握了Python读取JSON文件的各种技巧!尝试在自己的项目中使用JSON存储和读取数据吧。

发表评论