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

yaml-cpp中数字字符串输出无引号,如何为深层节点添加双引号?

解决yaml-cpp深层节点字符串输出无引号的问题

要让YAML输出里的特定深层节点值带上双引号,不用全局设置样式,直接给目标节点单独配置输出样式即可:

方法1:给目标节点单独设置双引号样式

直接对需要加引号的深层节点调用SetStyle方法,指定双引号格式:

YAML::Node myNode;
// 赋值后给目标节点设置样式
myNode["some-value"] = "3";
myNode["some-value"].SetStyle(YAML::EmitterStyle::DoubleQuoted);

// 嵌套深层节点的情况同理
myNode["parent"]["child"] = "123";
myNode["parent"]["child"].SetStyle(YAML::EmitterStyle::DoubleQuoted);

YAML::Emitter emitter;
emitter << myNode;

方法2:显式构造字符串节点(避免自动类型推断)

如果yaml-cpp把看起来像数字的字符串自动推断为数字类型,可直接构造字符串类型节点再设置样式:

YAML::Node myNode;
// 显式创建字符串类型节点,避免被识别为数字
myNode["some-value"] = YAML::Node(YAML::NodeType::Scalar, "3");
myNode["some-value"].SetStyle(YAML::EmitterStyle::DoubleQuoted);

生成的YAML输出示例:

some-value: "3"
parent:
  child: "123"

这样输出的带引号字符串能通过JSON Schema的类型验证,且仅对指定节点生效,不影响其他节点格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 09:45:57