2016-12-20 13 views

答えて

2

残念ながら、Jsonのインスタンスを直接変更することはできないようですが、私はオブジェクトを変更するための何かを見ることができません。
アクセシブルではないJsonValueの周囲の不透明なラッパーです。

とにかく、Json::objectstd::map<std::string, Json>です。それは次のようにあなたの元Json::objectのコピーを作成することができます。

Json::object json_obj = my_json.object_items(); 

を次にキーkeys3はそれがstd::vector<Json>以外の何ものでもありません、Json::arrayが含まれています。それは次のように
あなたはそれを修正することができます。

json_obj["keys3"].push_back(4); 

を最後に、あなたのJson::objectから新しいJsonを作成する必要があり、それがすべてです:

Json another_json = json_obj; 

かなり高価な操作。
私はあなたのオブジェクトをステップバイステップで作成し、プロセスの最後にJsonのインスタンスを作成することが正しい方法だと思っています。

+0

あなたの答えは@skypjackに感謝します。私はgithubに関するjson11プロジェクトに関連した問題を発見しました。(私は答えを出します) –

0

私はこの質問についてgithubの上で次の問題が見つかりました:

を説明skypjackそれ以下同じOより::オブジェクトタイプは std :: mapなので、最初の行で Json :: objectが作成された場合は、コードが機能します。このマップを使用して、 が必要なデータを作成し、それを修正したらJson(データ)としてラップすることができます。 は、object_items()を使用してJsonからマップを抽出し、コピーして を変更し、それを使用してビルダ パターンと同様に新しいJsonを作成することができます。

説明非常に興味深いです を持っていますスレッドの安全性を含む多数の利点、およびコピー全体でデータを共有する能力。可変配列が必要な場合は、 Json :: array(ベクトルのtypedef)を使用して、 をJsonオブジェクトに入れる前に自由に変更することができます。

関連する問題