Python JSON解析教程:从入门到精通

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

什么是JSON以及为何需要解析它

JSON(JavaScript对象表示法)是一种轻量级的文本数据交换格式,已成为应用程序间信息传输的标准。尽管名称中包含JavaScript,但JSON并不依赖于JavaScript,而是被所有现代编程语言广泛使用。

JSON的主要优势:

  • 人类可读的格式
  • 简单的数据结构
  • 通用支持性
  • 相比XML更加紧凑

JSON对象示例:

{
  "name": "Alice",
  "age": 30,
  "is_active": true,
  "hobbies": ["reading", "cycling", "traveling"]
}

Python内置的json模块

Python提供了强大的内置json模块来处理JSON数据。该模块支持两种核心操作:

  1. 反序列化 — 将JSON字符串转换为Python对象
  2. 序列化 — 将Python对象转换为JSON字符串

首先导入模块:

import json

将JSON字符串解析为Python对象

使用json.loads()

json.loads()函数(load string)将JSON字符串转换为对应的Python对象:

import json

json_data = '{"name": "Bob", "age": 25, "is_active": false}'
parsed_data = json.loads(json_data)

print(parsed_data)  # {'name': 'Bob', 'age': 25, 'is_active': False}
print(type(parsed_data))  # <class 'dict'>

解析后,你可以像操作普通字典一样使用数据:

print(parsed_data['name'])  # Bob
print(parsed_data['age'])   # 25

数据类型对应关系

JSON类型会自动转换为Python类型:

JSON Python
object dict
array list
string str
number int/float
true/false True/False
null None

将Python对象转换为JSON

使用json.dumps()

json.dumps()函数将Python对象转换为JSON字符串:

data = {'name': 'Alice', 'age': 30, 'is_active': True}
json_string = json.dumps(data)
print(json_string)  # {"name": "Alice", "age": 30, "is_active": true}

格式化参数

使用额外参数提升可读性:

data = {'name': 'Alice', 'age': 30, 'city': '北京'}
json_pretty = json.dumps(data, indent=4, sort_keys=True, ensure_ascii=False)
print(json_pretty)

主要参数说明:

  • indent — 缩进格式化
  • sort_keys — 键排序
  • ensure_ascii — 支持Unicode字符

处理JSON文件

从文件读取JSON

使用json.load()从文件读取JSON数据:

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

将JSON写入文件

json.dump()函数将数据写入文件:

data = {'city': '北京', 'temperature': -5, 'weather': '雪'}

with open('weather.json', 'w', encoding='utf-8') as file:
    json.dump(data, file, indent=4, ensure_ascii=False)

文件操作建议

  • 始终指定编码

博客

书籍推荐