2017-09-08 25 views
0

JSONドキュメントの先頭にいくつかのフィールドを表示する必要があるパートナーと協力しています。この初期データが何であるかを知る前にドキュメントを作成し、最初に挿入する方法を見つけることができませんでした。 我々は持っている:jsoncpp追加するのではなくオブジェクトにオブジェクトを挿入する

Json::Value json_message 
json_message["singlestring"] = "blah blah blah" 

は、後の機能は

{ 
"singlestring":"blah blah blah", 
"subobject": 
{ 
"one":"some sub 1", 
"two":"some sub 2", 
} 
} 

になりますが、我々は

{ 
"subobject": 
{ 
"one":"some sub 1", 
"two":"some sub 2", 
}, 
"singlestring":"blah blah blah" 
} 

を必要とし、このメッセージ

SomeFunction(Json::Value &json_message) { 
    Json::Value sub_json; 
    sub_json["one"] = "some sub 1"; 
    sub_json["two"] = "some sub 2"; 
    json_message["subobject"] = sub_json; 
} 

はに方法はあります挿入 " subobject "をドキュメントの先頭に追加するか、既存のjson_messageをsub_jsonに追加するかを指定します。 ありがとうございます

答えて

0

オブジェクトメンバーの内部表現のため不可能です。

JsonCppはstd::mapを使用します。 FastWriterを使用して文字列にシリアル化するとき、オブジェクトが見つかった場合はstd::vector<JSONCPP_STRING> getMemberNames()が呼び出されます。これはstd::mapのキーをベクトルに入れます。

ゴールに達するには、getMemberNames()を変更して、好きなメンバー(たとえばsubobject)に「優先度」を割り当てる必要があります。

+0

私の疑惑を確認していただきありがとうございます。 – PhilC

関連する問題