好问题,阿杰 👍
我来帮你详细解析一下 json.dumps() 函数


📝 Python json.dumps() 函数解析

1. 基本作用

  • json.dumps() 用来将 Python 对象 转换为 JSON 格式的字符串
  • dumps = dump string(把数据“倒”成字符串)。
import json

data = {"name": "阿杰", "age": 25, "hobby": ["编程", "音乐"]}
json_str = json.dumps(data)

print(json_str)
# 输出: {"name": "\u963f\u6770", "age": 25, "hobby": ["编程", "音乐"]}
print(type(json_str))   # <class 'str'>


2. 常用参数

(1) ensure_ascii

默认 True,会把非 ASCII 字符转义成 \uXXXX

json.dumps({"city": "北京"})
# 输出: {"city": "\u5317\u4eac"}

json.dumps({"city": "北京"}, ensure_ascii=False)
# 输出: {"city": "北京"}

👉 建议中文场景设置 ensure_ascii=False


(2) indent

用于格式化 JSON 输出(美化缩进)。

data = {"name": "阿杰", "age": 25, "skills": ["Python", "Vue"]}
print(json.dumps(data, indent=4, ensure_ascii=False))

输出:

{
    "name": "阿杰",
    "age": 25,
    "skills": [
        "Python",
        "Vue"
    ]
}


(3) separators

控制分隔符(默认是 (", ", ": "))。

data = {"a": 1, "b": 2}
print(json.dumps(data, separators=(",", ":")))
# 输出: {"a":1,"b":2}

👉 用于生成更紧凑的 JSON。


(4) sort_keys

是否按 key 排序,默认 False

data = {"b": 2, "a": 1}
print(json.dumps(data, sort_keys=True))
# 输出: {"a": 1, "b": 2}


3. 综合示例

data = {"name": "阿杰", "age": 25, "skills": ["Python", "Vue"]}

json_str = json.dumps(
    data,
    ensure_ascii=False,
    indent=2,
    sort_keys=True,
    separators=(",", ": ")
)

print(json_str)

输出:

{
  "age": 25,
  "name": "阿杰",
  "skills": [
    "Python",
    "Vue"
  ]
}


4. 对比:dump vs dumps

  • json.dump(obj, fp):把对象写入到文件中
  • json.dumps(obj):把对象转换成字符串
# dumps
s = json.dumps({"a": 1})
print(s)   # '{"a": 1}'

# dump
with open("data.json", "w", encoding="utf-8") as f:
    json.dump({"a": 1}, f, ensure_ascii=False)