您提供的代码看起来是使用 nlohmann/json 库和 yaml-cpp 库进行 JSON 到 YAML 的转换。这个递归函数 jsonToYaml
接受一个 json
对象和一个 YAML::Emitter
,将 JSON 转换为对应的 YAML。
下面是完整示例代码:
#include <iostream>
#include <fstream>
#include <yaml-cpp/yaml.h>
#include <nlohmann/json.hpp>
using json = nlohmann::json;
void jsonToYaml(const json& jsonData, YAML::Emitter& emitter)
{
if (jsonData.is_object())
{
emitter << YAML::BeginMap;
for (auto it = jsonData.begin(); it != jsonData.end(); ++it)
{
emitter << YAML::Key << it.key();
jsonToYaml(it.value(), emitter);
}
emitter << YAML::EndMap;
}
else if (jsonData.is_array())
{
emitter << YAML::BeginSeq;
for (const auto& item : jsonData)
{
jsonToYaml(item, emitter);
}
emitter << YAML::EndSeq;
}
else
{
// Scalar value
emitter << jsonData.get<json::string_t>();
}
}
int main()
{
json jsonData = R"(
{
"name": "全府员公多市面",
"applications": 1,
"notes": "laborum",
"generate": [
{
"incentive_id": 1,
"node_id": 1,
"data_struct_number": "74"
}
]
})"_json;
YAML::Emitter yamlEmitter;
jsonToYaml(jsonData, yamlEmitter);
std::ofstream file("output.yaml");
file << yamlEmitter.c_str();
file.close();
return 0;
}
请确保在编译时链接并包含所需的库,yaml-cpp 和 nlohmann/json。以上示例代码将 JSON 数据转换为 YAML,并将结果写入到 output.yaml
文件中。
内容由零声教学AI助手提供,问题来源于学员提问