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