You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何利用YAML作为JSON超集的特性实现两者混合编写?

如何在JSON风格的YAML中混合使用YAML多行字面量?

问题描述

YAML是JSON的超集,支持直接在.yml文件中写入JSON内容。我希望以编写JSON风格的代码为主,仅在处理多行内容时切换为YAML的|字面量风格,但尝试的写法触发报错:

Plain value cannot start with block scalar indicator | at line 3, column 20:

解决方案

核心问题在于:JSON语法的字符串值不允许直接嵌入YAML的块标量符号|,必须遵循YAML的语法规则来混合两种写法,具体可按以下方式实现:

合法的混合写法示例

{
  "title": "JSON风格的键值对",
  "short_desc": "这是标准JSON格式的字符串值",
  "long_content": |
    第一行多行内容
    第二行内容
    第三行,使用YAML字面量格式保留换行
}

关键说明

  1. 大部分键值对可以保留JSON风格(双引号包裹键和字符串值),完全符合YAML作为JSON超集的特性。
  2. 需要多行内容的键值对,改用YAML语法书写:键可以选择带双引号或不带(YAML支持无引号的合法键名),值直接使用|块标量,与键之间用冒号加空格分隔。
  3. 这种混合写法完全兼容YAML解析器,既满足了以JSON为主的编写习惯,又能利用YAML的多行字面量简化长文本编写。

错误写法规避

不要尝试在JSON风格的字符串值中插入|,比如以下写法会触发你遇到的报错:

{
  "long_content": "|
    第一行内容
    第二行内容
"
}

这种写法将|作为JSON字符串的一部分,违反了YAML对块标量的语法要求,导致解析失败。

内容的提问来源于stack exchange,提问作者James F

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 11:52:26