5

jsoncppパーサー ( http://jsoncpp.sourceforge.net ) を使用してJSON データを解析しています。したがって、次の JSON があるとします。

{ "name": "Joseph", "age": 20 }

プロパティ名 namevalue Josephを取得するにはどうすればよいですか? OK、これを普遍的に行うことができます:

string e = root.get(propertyName, defaultValue).asString();

しかし、私たちが本当に欲しいのは次のようなものです:

string e = root.get(name, "Mark").asString();

さて、変数eはジョセフです。うまくいきます。しかし、私は「名前」を取る/書く必要があります。クエリを実行したくありません( 「name」 (プロパティの名前) と「Joseph」 (プロパティの値)を取得したい関数に疑問を持たずに)。

フィールドに格納するのが最善でしょう(C / C ++など):

property[name][0] = "Joseph"
property[age][0] = 20 

どうやってやるの?または他のアイデアはありますか?

4

1 に答える 1

6

関数を使用して Json::Value オブジェクトのすべてのメンバー名を取得できますgetMemberNames()。これにより、他の標準ライブラリ コンテナーと同様に、.begin()andを使用して反復処理できるオブジェクトが返されます。.end()(実際、戻り値の型は のエイリアスですstd::vector<std::string>。)

.get(std::string &, const ValueType &)メンバー名を取得したら、それらを反復処理して、オブジェクトの各キーの値を取得するために既に行っているように使用できるはずです。


JSON オブジェクトは本質的に順序付けされていないため、その名前リストが順序付けされていることに必ずしも依存できないことに注意してください。順序付けされたオブジェクトが必要な場合は、JSON オブジェクトではなく、JSON 配列を使用する必要があります。

于 2012-10-26T00:47:10.500 に答える