我用yaml-cpp在我的项目中做了很多事情。现在,我想以JSON的形式写出一些数据。由于JSON是YAML的一个子集,至少对于我需要的特性来说,我理解在yaml-cpp中设置一些选项来输出纯JSON是可能的。那是怎么做到的?
发布于 2017-05-10 22:56:25
yaml-cpp没有直接强制与JSON兼容的输出的方法,但是您可能可以模仿它。
YAML:Emitter Emitter;
emitter << YAML:: DoubleQuoted << YAML::Flow << /* rest of code */;发布于 2021-03-10 01:11:58
杰西·比德的答案似乎不适用于我;我仍然使用YAML语法获得多行输出。然而,我发现,通过在<< YAML::Flow之后立即添加<< YAML::BeginSeq,可以强制所有东西都使用JSON语法在一行上结束。然后,您必须删除开头的[字符:
YAML::Emitter emitter;
emitter << YAML::DoubleQuoted << YAML::Flow << YAML::BeginSeq << node;
std::string json(emitter.c_str() + 1); // Remove beginning [ character然而,仍然有一个主要问题:数字被引用,将它们转化为字符串。我不确定这是否是YAML::DoubleQuoted的故意行为;在测试中,我没有看到任何测试用例涵盖当您将DoubleQuoted应用于一个数字时会发生什么。此问题已提交这里。
https://stackoverflow.com/questions/43902941
复制相似问题