API 联调排错
后端返回的 YAML 配置文件在接口联调时始终解析失败,日志只报 `mapping values are not allowed here`。开发者把 YAML 片段粘贴到本工具,点击格式化后立即发现第 14 行 `port: 8080` 前多了一个制表符,而 YAML 只认空格。修正后重新校验通过,联调耗时从预估的 2 小时压缩到 10 分钟。
开发者工具 · JSON / 数据格式
缩进/校验
格式化结果将在这里呈现 —— 点「示例」试试调试 YAML 时,缩进差一个空格就能让整个配置文件失效。这个工具把粘贴进来的 YAML 文本重新缩排,同时校验结构是否合法,并高亮标记出括号不配对或缩进不一致的行。解析和格式化全程在浏览器内完成,文件不会离开本地——适合写 CI 配置、K8s 清单或 Ansible 剧本时快速排错。
后端返回的 YAML 配置文件在接口联调时始终解析失败,日志只报 `mapping values are not allowed here`。开发者把 YAML 片段粘贴到本工具,点击格式化后立即发现第 14 行 `port: 8080` 前多了一个制表符,而 YAML 只认空格。修正后重新校验通过,联调耗时从预估的 2 小时压缩到 10 分钟。
运维同事合并了 GitLab CI 的 `.gitlab-ci.yml` 分支,但合并后的文件缩进混乱,导致流水线全部失败。将合并后的内容粘贴到工具,格式化后清晰看到 `before_script` 和 `script` 层级错位——`script` 被缩进到了 `job` 的上一级。修正缩进后重新提交,流水线恢复运行,避免了 3 次无效重跑。
准备上线新服务,`deployment.yaml` 由多人协作编写,其中一位同事在 `containers` 下漏了 `-` 短横线,导致 `kubectl apply` 报 `error validating data`。将文件粘贴到工具,校验功能直接标出第 32 行 `name: nginx` 缺少数组前缀。修正后 `apply` 一次通过,避免了生产环境回滚风险。
从社区复制了一段 Ansible playbook 示例,但粘贴后缩进全乱——`tasks` 下的模块名与参数混在同一层级。把内容丢进工具,格式化后自动对齐 `name`、`yum`、`notify` 的层级关系,同时校验出 `state: present` 前多了一个冒号。修复后 playbook 在测试环境一次执行成功。
将 Swagger 的 JSON 定义通过在线转换器转成 YAML 格式,但转换结果缩进不一致,导致 Swagger UI 无法加载。粘贴到工具,格式化后 `paths` 下的每个端点缩进统一为 2 空格,校验未报错。直接替换原文件后,Swagger UI 恢复正常渲染,节省了手动逐行检查的 30 分钟。
| 输入 | 输出 | 说明 |
|---|---|---|
| name: John age: 30 address: city: Beijing street: Main St | name: John age: 30 address: city: Beijing street: Main St | 常规:正确缩进(2空格)的YAML,工具应原样输出并验证通过 |
| key: value nested: wrong | 错误:缩进不一致,第2行' nested'缩进层级不匹配,期望0空格但实际2空格 | 边界:缩进层级错乱(第1行无缩进,第2行有2空格),工具需明确报错位置 |
| list: - item1 - item2 - item3 | list: - item1 - item2 - item3 | 常规:列表缩进正确(2空格+短横线+空格),验证列表结构识别 |
| empty_value: key2: value2 | 错误:第1行'empty_value: '后存在多余空格,导致空值解析歧义 | 易错:冒号后空格过多(非标准空值写法),工具应提示而非静默处理 |
| a: b: 1 c: 2 | 错误:第3行' c'缩进(1空格)与第2行' b'(2空格)不一致,期望2空格 | 边界:同一层级缩进不一致(1 vs 2空格),工具需精确指出行号和期望缩进 |
| key: "value with : colon" number: 123 bool: true | key: "value with : colon" number: 123 bool: true | 常规:混合类型(字符串带引号、数字、布尔),验证类型识别和引号处理 |
| key: nested: deep: value sibling: other | key: nested: deep: value sibling: other | 常规:多级嵌套(3层),验证深层缩进对齐和同级兄弟节点识别 |
| key: [1, 2, 3] map: {a: 1, b: 2} | key: - 1 - 2 - 3 map: a: 1 b: 2 | 易错:内联格式(JSON风格)自动展开为块格式,验证转换逻辑而非简单保留 |
1.缩进使用 Tab 而非空格
key:
valuekey:
valueYAML 规范禁止 Tab 缩进,必须使用空格。Tab 在不同编辑器宽度不同,会导致解析器无法识别层级。
2.冒号后缺少空格
name:Johnname: JohnYAML 中冒号后必须跟一个空格,否则解析器会把 'name:John' 当作一个字符串键名,而非键值对。
3.列表项缩进不一致
fruits:
- apple
- bananafruits:
- apple
- banana同一列表的所有项必须保持相同缩进层级,否则解析器会认为 'banana' 属于不同父级。
4.字符串值未加引号导致类型错误
version: 1.0version: "1.0"不加引号的 1.0 会被解析为浮点数而非字符串。若后续需要字符串操作(如拼接),会因类型不匹配报错。
5.多行字符串使用错误缩进
description: |
Line one
Line twodescription: |
Line one
Line two块标符 | 后的内容必须统一缩进,且第一行后的所有行缩进量必须一致,否则解析器会截断内容。
6.注释符号 # 放在行中导致键值被截断
key: value # this is a commentkey: value # 注释前至少两个空格YAML 注释从 # 开始到行尾结束。若 # 紧贴值(无空格),解析器可能将 # 视为值的一部分导致意外。
7.布尔值大小写不统一
enabled: yes
active: Trueenabled: true
active: trueYAML 规范要求布尔值使用小写 true/false。yes/True 虽被部分解析器支持,但跨语言移植时可能被当作字符串。
8.空值使用 null 而非 ~ 或留空
key: nullkey: ~YAML 中 null 是合法写法,但某些解析器(如 PyYAML)会将 null 解析为字符串 'null'。推荐用 ~ 或留空。
缩进深度 = 父级缩进 + 2(空格)
父级缩进上一层级前导空格数缩进深度当前层级前导空格数根节点缩进 0 空格,其子键值对缩进 2 空格,孙节点缩进 4 空格。如: name: John age: 30 city: Beijing 父级缩进 2 空格,子级缩进 4 空格。
可以。本工具的核心功能之一就是校验 YAML 语法,其中缩进错误是最常见的报错类型。当你粘贴 YAML 内容并点击格式化后,工具会同时检查缩进是否一致(比如同一层级用了不同数量的空格)。如果缩进有问题,结果区会给出具体的错误行号和原因。建议先手动检查缩进层级是否统一用 2 个或 4 个空格,不要混用 Tab 和空格。
那是 YAML 列表(数组)的写法。在 YAML 中,以短横线 `- ` 开头表示一个列表项。如果你的原始内容里包含 `- `,格式化后工具会按标准缩进规则调整它的对齐。如果看到原本不是列表的地方出现了横杠,可能是输入内容里把 `- ` 误写成了连续文本,比如 `key: -value` 会被解析为 `key: -value` 的字符串,而不是列表。可以检查一下原始内容中的 `-` 前后是否有空格。
不会。本工具是纯前端实现(FE),所有格式化、校验、缩进调整操作都在浏览器本地完成,数据不会离开你的设备。即使断网也能正常使用。如果你处理的 YAML 包含敏感配置(如密码、密钥),这一点可以放心。
可以写中文注释,格式化后不会乱码。YAML 标准支持 UTF-8 编码,注释以 `#` 开头,工具在格式化时会保留注释内容和位置。需要注意的是,如果注释中包含特殊字符(如冒号、方括号),最好用引号包裹整个注释内容,否则可能被解析器误判为语法结构。本工具对中文注释的处理是安全的,不会自动转义或删除。
这是 YAML 的标准格式要求。在 YAML 中,键值对 `key: value` 的冒号后面必须有一个空格,否则解析器会报错。本工具在格式化时会自动补充这个空格,确保语法正确。如果你习惯写 `key:value`(无空格),格式化后会变成 `key: value`。这是为了让 YAML 符合规范,不是 bug。如果不想被自动补空格,可以在设置中关闭自动格式化,但那样可能无法通过后续的校验。
大概率不是丢数据,而是工具合并了重复的键或折叠了多行字符串。YAML 允许用 `>` 或 `|` 块标来折叠多行文本,格式化后工具会重新整理这些块标,看起来行数变少但内容完整。另外,如果 YAML 中有重复的键(同层级下同名 key),后出现的值会覆盖前面的,工具在格式化时不会报错,但实际解析时只会保留最后一个值。建议检查原始内容中是否有重复键。
主要区别在于隐私和速度。本工具纯前端运行,数据不上传,适合处理敏感配置;而许多在线校验网站需要将数据发送到服务器,可能存在隐私风险。另外,本工具支持断网使用,响应更快。功能上,两者都支持缩进校验和格式化,但本工具额外提供了实时错误提示(输入即校验),不需要手动点击按钮。如果你需要批量处理大量文件,建议用本地编辑器配合 YAML 插件。
隐私保证所有计算与处理均在你的浏览器本地完成,输入数据不会上传服务器,也不会保存或共享。