2017-09-08 82 views
0

我們正在與一個合作伙伴合作,該合作伙伴需要在JSON文檔的開頭出現一些字段。我們在知道這個初始數據是什麼之前建立一個文檔,並且一開始就無法找到插入它的方法。 我們:jsoncpp插入對象到文檔而不是追加

Json::Value json_message 
json_message["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; 
} 

導致

{ 
"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" 
} 

有沒有一種辦法插 」子對象「添加到文檔的開頭,或將現有的json_message附加到sub_json? 謝謝

回答

0

由於對象成員的內部表示,這是不可能的。

JsonCpp使用std::map。當您使用FastWriter序列化爲字符串時,如果找到一個對象,則調用std::vector<JSONCPP_STRING> getMemberNames(),該對象將std::map的鍵放入向量中。

要達到您的目標,您必須修改getMemberNames(),爲您喜歡的成員(如subobject)分配「優先級」。

+0

謝謝您確認我的懷疑。 – PhilC