Boost属性write_json行为不正确

时间:2012-11-19 23:39:24

标签: c++ json boost boost-propertytree

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

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

但是这个方法不明白什么是true,false,null或数字。 一切都转换为字符串。

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

1 个答案:

答案 0 :(得分:11)

Link在此链接中可以解决问题。

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

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;
}

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