代码点读机 / Python / json

json Python · 常用模块

`json` 模块用于处理 JSON 格式的数据。JSON 是一种文本格式,常用于数据交换(比如网站接口返回的数据)。`json` 模块可以把 Python 对象转成 JSON 字符串,也可以把 JSON 字符串转回 Python 对象。就像一个翻译官,在 Python 语言和 JSON 语言之间互译。记的话就记翻译官,人中痒痒的翻译官。

怎么用

import json
json.dumps(python对象)   # Python → JSON 字符串
json.loads(json字符串)   # JSON 字符串 → Python

小例子

import json
# Python 字典转 JSON 字符串
数据 = {"名字": "小明", "年龄": 18, "爱好": ["篮球", "游戏"]}
json字符串 = json.dumps(数据, ensure_ascii=False, indent=2)
print(json字符串)
# JSON 字符串转 Python 字典
解析后 = json.loads(json字符串)
print(解析后["名字"])

运行结果

{
  "名字": "小明",
  "年龄": 18,
  "爱好": ["篮球", "游戏"]
}
小明

对比:手动处理 JSON 字符串非常麻烦

# 需要自己写解析器,或者用字符串操作,容易出错
用 `json` 模块可以安全地转换。

常见使用场景

1. 读取配置文件:
import json
with open("配置.json", "r", encoding="utf-8") as f:
    配置 = json.load(f)
print(配置)
2. 调用 API 接口后解析返回数据:
import json
import requests
响应 = requests.get("https://api.example.com/data")
数据 = json.loads(响应.text)
3. 保存数据到文件:
with open("数据.json", "w", encoding="utf-8") as f:
    json.dump(数据, f, ensure_ascii=False, indent=2)

提醒:- `dumps` 和 `loads` 后面的 `s` 表示字符串(string),`dump` 和 `load` 直接处理文件。 - `ensure_ascii=False` 可以输出中文而不是 Unicode 转义字符。 - JSON 中 `null` 对应 Python 的 `None`,`true` 对应 `True`,`false` 对应 `False`。 - Python 的 `json.dumps` 无法直接序列化 `datetime`、`set` 等类型,需要自定义转换。

官方文档:https://docs.python.org/zh-cn/3/library/json.html

在代码里遇到不认识的词?打开代码点读机,点一下就懂 → ← Python全部词条