ZH
我的工具

Python 字典转 JSON(也支持 JSON 转 Python)

把 print 出来的 Python dict、list、tuple 转成合法的 JSON,支持 True/False/None、单引号、元组、set、Decimal 和 datetime,也可把 JSON 转回 Python 字面量。

转换方向
JSON

元组已转为 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 字面量。

使用方法

  1. 粘贴打印出来的 dict、list 或 tuple,例如来自 print()、日志或调试器。
  2. 选择 Python → JSON(或反向转换)。
  3. 选择缩进,以及 nan 和 inf 的写法。
  4. 复制 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 解析器会拒绝)。

会运行我的代码吗?

不会。它只读取字面量的值。遇到不认识的变量名或调用时会报错停止,而不是去计算。

我的数据会被上传吗?

不会。一切都在浏览器中完成。

资料来源

最后更新:

引用此工具
APA

kakaoCalc. (2026, November 8). Python 字典转 JSON(也支持 JSON 转 Python). https://kakao.mobile/zh/tools/python-dict-to-json-tool/

MLA

“Python 字典转 JSON(也支持 JSON 转 Python).” kakaoCalc, 8 Nov. 2026, kakao.mobile/zh/tools/python-dict-to-json-tool/.

广告