JSON & YAML 格式化与校验工具

粘贴 JSON 或 YAML,工具会自动识别格式、边输入边检查,并精确指出每个缺失的括号、逗号或引号所在的行。一键格式化、压缩、转换或比较,数据不会上传。

输入
输出

    数据不会离开你的浏览器。快捷键:Ctrl/⌘ + Enter 执行主操作。

    这个工具能做什么?

    这是一个完全在浏览器中运行的 JSON 和 YAML 工作台。把内容粘贴或拖入编辑器后会立即解析:如果有问题,你会看到每个问题的行号和列号、通俗的解释;对于括号不匹配,还会推测缺失的括号应该放在哪里。输入有效时,你可以美化、压缩、对键排序,或在 JSON 与 YAML 之间互相转换。对比页面会比较文件的两个版本,只显示发生变化的部分。

    与大多数在线格式化工具不同,这里的 JSON 解析器是为诊断而不是为速度而写的。浏览器内置的 JSON.parse 遇到第一个问题就会停下,只给出类似 Unexpected token 的提示。而这个解析器会继续解析,一次性收集所有问题,并生成一个修复后的版本,让你可以一次改完整个文件,而不必每次只修一个错误。

    全部工具

    如何格式化或校验 JSON 和 YAML

    1. 粘贴、拖入或打开文件。标签会显示内容被识别为 JSON 还是 YAML,状态栏会随输入实时更新。
    2. 查看问题列表。每一项都有一个按钮,可跳转到编辑器中的确切位置;受影响的行会在行号栏中高亮。
    3. 点击“格式化”“压缩”或某个转换按钮。选择 2 个空格、4 个空格或制表符,并决定是否对键排序。
    4. 复制或下载结果,或点击“用作输入”继续处理。

    能检测出的 JSON 错误

    以下是手动编辑 JSON 或从 JavaScript、Python、日志文件中复制时最常见的错误。它们都会带位置报告,并可通过“修复 JSON”按钮修复:

    你写的内容校验器的提示有效的 JSON
    {"a": 1,}"}" 前有尾随逗号{"a": 1}
    {"a": 1 "b": 2}第 1 行的值后缺少逗号{"a": 1, "b": 2}
    {"a": [1, 2}应为 "]" 以闭合第 1 行开始的数组{"a": [1, 2]}
    {'a': 'b'}字符串必须使用双引号{"a": "b"}
    {a: 1}属性名必须放在双引号中{"a": 1}
    {"n": 007, "x": .5}前导零;数字以小数点开头{"n": 7, "x": 0.5}
    {"ok": True, "v": None}布尔值和 null 须小写{"ok": true, "v": null}
    // commentJSON 中不允许注释删除注释

    能检测出的 YAML 问题

    YAML 错误大多与空白有关:用制表符缩进、子键多缩进了一个空格,或者写成 key:value 而冒号后没有空格,YAML 会把它读成一个字符串。校验器会报告这些问题及其行号,并对 PyYAML 等 YAML 1.1 解析器与 YAML 1.2 解读不同的值给出警告,例如 country: NO 会变成 false,mode: 0755 会变成八进制数字。

    隐私

    本页面由静态 HTML 和 JavaScript 构成。你粘贴的任何内容都不会被传输、存储或记录,无需注册账号;页面加载完成后即使断开网络,工具也能继续使用。

    常见问题

    我的数据会发送到服务器吗?

    不会。解析、格式化、转换和对比都在你的浏览器标签页中由 JavaScript 完成。页面不会携带你的文本发出任何请求,因此可以放心粘贴配置文件、测试数据中的令牌或客户数据。关闭标签页后,一切都会消失。

    工具如何判断我的文本是 JSON 还是 YAML?

    如果文本以 { [ 或双引号开头,就按 JSON 处理;否则按 YAML 解析。所有 JSON 文档同时也是有效的 YAML,因此编辑器上方的标签会显示使用了哪个解析器。专门的 JSON 和 YAML 页面会跳过自动识别。

    最大能打开多大的文件?

    25 MB 以内的文件可以直接打开。在笔记本电脑上,几 MB 的文件校验和格式化用时远低于一秒;超大文件只会让实时检查变慢,它会等待更久再执行。

    为什么错误上方显示“最可能的原因”?

    括号不匹配时,解析器报告的错误位置往往离真正的错误很远。校验器还会参考缩进:如果某一行的缩进与开启某个对象的行相同,那么这个对象很可能本该在它之前结束。这个推测会排在最前面,“修复 JSON”也会据此插入缺失的括号。

    格式化会改变我的数据吗?

    不会。数字会按原样输出(12345678901234567890 保持完整,不会被四舍五入);除非勾选“键排序”,否则键顺序保持不变;重复的键会保留并标记出来。YAML 格式化会保留注释、锚点和文档标记。

    可以离线使用吗?

    可以。页面加载完成后,所有工具都无需联网即可使用。你也可以保存页面后在本地打开。