我正在为Boost属性树编写JSON包装器。 目前,重点是将生成的JSON写入字符串或文件中。
使用boost :: property_tree :: json_parser :: write_json(ss,* pt)生成的属性树以字符串形式写入。
但是这个方法不明白什么是true,false,null或数字。 一切都转换为字符串。
阅读Boost文档,这是库的限制。 有没有办法修改这种行为?
答案 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和任何类型的数字。 匹配被替换为没有引号的匹配。