2017-09-08 111 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