2012-01-13 66 views
3

json cpp http://jsoncpp.sourceforge.netを使用してjsonデータを解析しています。私は実際にデータを理解する必要はありません、私はちょうどいくつかのプロパティとその値を印刷する必要があります。それは何とかするのは難しいです。最初に、値の型を知ってから値を取得し、それを再び文字列に変換する必要があります。スタイリッシュな作家がいますが、最後にCRLFを追加するので、私はそれを使用したくありません。JsonCPP値を文字列として取得する方法は?

私はこの

CJsonHelper::getUInt(Json::Value &root, std::string key){ 
    return root.get(key, 0-1).isInt() ? root.get(key, 0-1).asUInt() : 0-1; 
} 

のようなものが、私は本当に種類など気にしないだけでその機能を持つすべてのプロパティを取得するための単一の関数を書くことができますか?

+0

なぜあなたは 'だけで使用して' 0-1'の代わりにされている-1'? –

+0

私はちょうど-1を書くことができます。 – Lalith

答えて

1

あなたが好きなことをする独自のライターを簡単に作成することができます。 StyledWriterのコードを見てください。あなたが好きではないCRLFはStyledWriter::Writeから来ます。これらのCRLFを持たない独自のライタークラスを作成できます。

ライブラリを変更しても構わない場合は、writeValueなどの機能がプライベートではなく保護されるようにライターを変更してください。その後、別のWrite関数を使用してStyledWriterから独自のクラスを派生させ、様々なwrite*関数を使用して変換の詳細を行うことができます。

3

プロジェクトはGitHubに移動しました。 StreamWriterBuilderを使用し、すべての改行を避けるために

Json::Value whatever = ...; 
Json::StreamWriterBuilder builder; 
builder.settings_["indentation"] = ""; 
std::string out = Json::writeString(builder, whatever); 
関連する問題