Python 字典转 JSON(也支持 JSON 转 Python)
把 print 出来的 Python dict、list、tuple 转成合法的 JSON,支持 True/False/None、单引号、元组、set、Decimal 和 datetime,也可把 JSON 转回 Python 字面量。
元组已转为 JSON 数组。
datetime/date/time 的值已变成 ISO 8601 文本,与 isoformat() 的返回值一致。
Decimal 值已按原有位数变成 JSON 数字(json.dumps 会拒绝它们)。
非文本的 dict 键像 json.dumps 一样变成了文本:1 → "1",True → "true",None → "null"。
大整数会保留全部位数;JavaScript 读取超过 ±9,007,199,254,740,991 的整数时会做舍入。
打印 Python 字典会得到单引号、True、False、None 和圆括号元组——这些文本看起来像 JSON,却会被所有 JSON 解析器拒绝。这个工具像 Python 一样读取字面量语法(包括转义、原始字符串、字节串、set、Decimal、datetime,以及输出中出现的 OrderedDict),并写出合法的 JSON。它也可以把 JSON 转回可以粘贴到代码里的 Python 字面量。
使用方法
- 粘贴打印出来的 dict、list 或 tuple,例如来自 print()、日志或调试器。
- 选择 Python → JSON(或反向转换)。
- 选择缩进,以及 nan 和 inf 的写法。
- 复制 JSON。
计算公式
True → true · False → false · None → null · 'text' → "text" · (1, 2) 和 {1, 2} → [1, 2] · {1: 'a'} → {"1": "a"}
字符串遵循 Python 的规则:单引号、双引号、三引号,r 和 b 前缀,\n、\x41、\u00e9、\U0001F600 等转义,以及相邻字面量的拼接。数字保留位数,所以大整数和 Decimal 值都是精确的;十六进制、八进制、二进制和下划线都会被转换。非文本的 dict 键会像 json.dumps 一样变成文本。datetime、date 和 time 会变成 ISO 8601 文本。不会执行任何代码:变量、列出的构造函数以外的函数调用,以及带表达式的 f-string 都会报错。
示例
示例会把 ('admin', 'beta') 转成 ["admin", "beta"],True 转成 true,None 转成 null,scores 的键 1 和 2 转成 "1" 和 "2",datetime.datetime(2024, 2, 29, 13, 45) 转成 "2024-02-29T13:45:00",Decimal('19.99') 转成 19.99,并保留 12345678901234567890 的全部 20 位数字。
常见问题
为什么不直接替换引号?
把 ' 换成 " 会弄坏 "It's" 这样的字符串,True 和 None 仍然留着,也无法处理转义和元组。只有正确解析字面量,才能得到与 json.dumps 相同的结果。
nan 和 inf 会怎样?
JSON 里没有这类值。默认变成 null;你也可以把它们写成字符串,或像 Python 的 json 模块那样写成 NaN/Infinity(大多数 JSON 解析器会拒绝)。
会运行我的代码吗?
不会。它只读取字面量的值。遇到不认识的变量名或调用时会报错停止,而不是去计算。
我的数据会被上传吗?
不会。一切都在浏览器中完成。
资料来源
最后更新:
包含这些输入的页面地址: https://kakao.mobile/zh/tools/python-dict-to-json-tool/
引用此工具
kakaoCalc. (2026, November 8). Python 字典转 JSON(也支持 JSON 转 Python). https://kakao.mobile/zh/tools/python-dict-to-json-tool/
“Python 字典转 JSON(也支持 JSON 转 Python).” kakaoCalc, 8 Nov. 2026, kakao.mobile/zh/tools/python-dict-to-json-tool/.