json.dumps()
和 jsonify
是 Python 中用于处理 JSON 数据的两个不同函数,分别属于标准库 json
和 Flask 框架的 flask
模块。以下是它们的详细解释和区别:
1. json.dumps(body)
-
所属库: Python 标准库
json
。 -
功能: 将 Python 对象(如字典、列表)序列化为 JSON 格式的字符串。
-
参数:
body
: 需要转换的 Python 对象(如dict
、list
)。- 可选参数:
indent
(缩进)、ensure_ascii
(是否转义非 ASCII 字符)、sort_keys
(按键排序)等。
-
返回值: JSON 格式的字符串(
str
类型)。 -
示例:
import json data = {"name": "Alice", "age": 25} json_str = json.dumps(data) # 输出: '{"name": "Alice", "age": 25}'
-
特点:
- 仅生成字符串,不直接支持 HTTP 响应。
- 适用于需要将 JSON 数据存储到文件或通过网络传输的场景。
2. jsonify(body)
-
所属库: Flask 框架的
flask
模块。 -
功能: 将 Python 对象转换为 Flask 的
Response
对象,并自动设置 HTTP 头Content-Type: application/json
。 -
参数:
body
: 需要转换的 Python 对象(如dict
、list
)。- 支持关键字参数形式(如
jsonify(name="Alice", age=25)
)。
-
返回值: Flask 的
Response
对象,可直接用于 HTTP 响应。 -
示例:
from flask import Flask, jsonify app = Flask(__name__) @app.route("/data") def get_data(): data = {"name": "Alice", "age": 25} return jsonify(data) # 自动转为 JSON 并设置响应头
-
特点:
- 专为 Web 开发设计,简化 JSON API 的响应。
- 自动处理 JSON 序列化和 HTTP 头设置。
核心区别
特性 | json.dumps() | jsonify() |
---|---|---|
所属库 | Python 标准库 json | Flask 框架 flask |
返回值类型 | JSON 字符串(str ) | Flask Response 对象 |
HTTP 头支持 | 需手动设置 Content-Type | 自动设置为 application/json |
适用场景 | 通用 JSON 序列化(非 Web) | Web API 开发(Flask 专用) |
何时使用?
- 如果需要在非 Web 环境下序列化 JSON(如写入文件),用
json.dumps()
。 - 如果是 Flask Web 开发并返回 JSON 响应,用
jsonify()
。