Boost属性write_json行为不正确

mar*_*nes 4 c++ json boost boost-propertytree

我正在为Boost属性树编写JSON包装器.目前,重点是将生成的JSON写入字符串或文件.

使用boost :: property_tree :: json_parser :: write_json(ss,*pt)生成的属性树以字符串形式写入.

但是这种方法不理解什么是true,false,null或数字.一切都转换为字符串.

阅读Boost文档,这是库的限制.有没有办法修改这种行为?

mar*_*nes 11

链接在此链接中是对问题的修复.

它涉及改变增强代码,因为我尝试了另一种选择.我的解决方案涉及正则表达

std::string JSONObject::toString() const
{
    boost::regex exp("\"(null|true|false|[0-9]+(\\.[0-9]+)?)\"");
    std::stringstream ss;
    boost::property_tree::json_parser::write_json(ss, *pt);
    std::string rv = boost::regex_replace(ss.str(), exp, "$1");

    return rv;
}
Run Code Online (Sandbox Code Playgroud)

基本上我搜索关键字:true,false,null和任何类型的数字.匹配被替换为没有引号的匹配.