全部指南
数据

YAML 转 JSON:保留你想要的换行

管道符、大于号和减号会产生不同的字符串。五个小示例说明了原因。

同一段 YAML,在编辑器里是两行,转成 JSON 后可能就成了一行。键后面的字符决定了这些换行符如何被读取;减号决定最后的换行符是否保留。

打开 CSV、JSON 和 YAML 转换器,粘贴此示例,在 从 中选择 YAML,在 至 中选择 JSON:

literal: |
  Ready to share.
  Check the link.
folded: >
  Ready to share.
  Check the link.
literal_strip: |-
  Ready to share.
  Check the link.
folded_strip: >-
  Ready to share.
  Check the link.

先阅读输出,再修改文本

转换器会生成以下四个字符串:

{
  "literal": "Ready to share.\nCheck the link.\n",
  "folded": "Ready to share. Check the link.\n",
  "literal_strip": "Ready to share.\nCheck the link.",
  "folded_strip": "Ready to share. Check the link."
}

在 JSON 源码中,\n 表示字符串内的换行符。它不是解析 JSON 后读者会看到的额外反斜杠。引号外的缩进只是为了让 JSON 更易读;它不会改变字符串内容。

对于两行文案,第三个版本通常更有用。对于配置文件中跨两行的一句话,第四个版本会把它合成一行,且没有末尾换行符。

分别选择块样式和结尾规则

YAML 标记 普通文本行之间 此示例末尾
| 保留换行符 保留一个末尾换行符
> 将换行折叠为空格 保留一个末尾换行符
|- 保留换行符 移除末尾换行符
>- 将换行折叠为空格 移除末尾换行符

这些规则描述的是像此示例这样的非空块。YAML 将结尾规则称为“chomping”;块标量规范 还定义了加号用于保留末尾空行。

折叠并不会消除所有换行符。空行和缩进更多的行有单独的规则。在转换消息、提示词或 shell 命令之前,如果其空格很重要,请先进行小规模测试。

空行仍然分隔段落

此示例使用折叠文本,但包含一个空行:

paragraphs: >-
  First paragraph.

  Second paragraph.

其转换后的值为:

{
  "paragraphs": "First paragraph.\nSecond paragraph."
}

两个段落之间有一个换行符,而不是空格或两个换行符。如果你需要精确的空行,请使用字面块并检查生成的字符串。

将块的内容用空格缩进到其键下。将行向左移动可能会结束块或使文档无效。损坏的文档应在源头修复,而不是通过删除所有空白来“修复”。

如果注释很重要,请保留 YAML

下载 完整 YAML 示例 及其 转换后的 JSON。该示例包含上述所有五种情况。

转换保留的是解释后的值,而不是 YAML 的原始呈现。注释、块样式标记和别名表示法不会保留在 JSON 中。如果你要再次编辑配置,请保留原始 YAML;将其转换回来不会恢复这些细节。

2026 年 10 月 12 日,我们通过工具的转换功能运行了可下载文件,并检查了每个字符串,包括其末尾换行符。结果文件 记录了预期值和下载哈希。该工具在浏览器中本地转换,但当你与他人共享配置时,仍应先删掉示例中的私密信息。