好问题,阿杰 👍
我来帮你详细解析一下 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)
发表回复