4

BoostプロパティツリーのJSONラッパーをコーディングしています。現在、焦点は、結果のJSONを文字列またはファイルに書き込むことにあります。

boost :: property_tree :: json_parser :: write_json(ss、* pt)を使用すると、結果のプロパティツリーが文字列で書き込まれます。

しかし、このメソッドは、真、偽、ヌル、または数値が何であるかを理解していません。すべてが文字列に変換されます。

Boostのドキュメントを読むと、これはライブラリの制限です。この動作を変更する方法はありますか?

4

1 に答える 1

12

リンクこのリンクには、問題の修正が含まれています。

ブーストコードを変更する必要があるため、別の方法を試しました。私の解決策には正規表現が含まれます。

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および任意のタイプの数字。一致は引用符なしで同じものに置き換えられます。

于 2012-11-20T14:39:56.503 に答える