2017-03-29 6 views
0

私はキーとして二つの文字列のペアを使用したいが、たとえばC++でJson :: Value :: ArrayIndexを作成するにはどうすればよいですか?

{(key1, key2): value} 

のために私は

std::string key1, key2, value; 
Json::Value p; 
p.append(key1); 
p.append(key2); 
dict[p] = value; 

を試みたが、コンパイラは実行可能なoperator[]はありません訴えました。

私も

dict[Json::Value::ArrayIndex(p)] = value; 

を試してみました。しかし、コンパイラは、変換のない実行可能な方法はありません訴えました。

さらに、pJson::Value::ArrayIndexと指定すると、appendが完全に使用されなくなります。

辞書を辞書のキーとして使用する正しい方法は何ですか?

+0

どのJSONライブラリですか? –

+0

申し訳ありませんが、私は[JsonCpp](https://github.com/open-source-parsers/jsoncpp)を使用しています。 –

+0

私はあなたの例が有効なjsonであるとは思わない。 [json spec](http://json.org)によると、キーは文字列でなければなりません。 –

答えて

0

文字列のみがJSONの有効なキーです。

文字列に2つのキーを連結し、そしてインデックスは、それを使用することを検討してください:

dict[key1.asString()+","+key2.asString()] = value; 

私はあなたが自分自身で,が含まれている奇妙なキーのいくつかの並べ替えを使用していないと仮定しています、あなたがそれらをエスケープする必要がありますその場合は。

+0

私は容赦なく間違っていたことに気付きました。 'ArrayIndex'は配列の"インデックス "を意味し、"インデックスのように動作する "配列ではありません。これをクリアしていただきありがとうございます! –

関連する問題