【发布时间】:2020-02-24 20:01:40
【问题描述】:
我想用 boosts property_tree 解析一个 json 文件/字符串,但我不想将子树解析成一个数组,而是希望它作为一个字符串保留在另一个仅处理 json-Strings 的现有函数中使用。
我希望下面的例子就足够了:
example.json
{
"type": "myType",
"colors": {
"color0":"red",
"color1":"green",
"color2":"blue"
}
}
main.cpp
std::stringstream ss("example.json");
ptree pt;
read_json(ss, pt);
std::string sType = pt.get("type", "");
std::string sColors = pt.get<std::string>("colors");
std::cout << "sType: " << sType << std::endl; // sType: myType
std::cout << "sColors: " << sColors << std::endl; // sColors: {"color0":"red", "color1":"green", "color2":"blue"}
我尝试了几个函数,例如pt.get_child("colors") 只会返回另一个 ptree,而pt.get_value<std::string>("colors") 会返回一个空字符串 ("")。
所需的输出如下所示:
sColors: {"color0":"red", "color1":"green", "color2":"blue"}
或
sColors: {\"color0\":\"red\", \"color1\":\"green\", \"color2\":\"blue\"}
有没有办法为 sColors 接收所需的输出?
【问题讨论】: