jsoncpp 将对象插入文档而不是追加

jsoncpp insert object into document rather than append

我们正在与一个合作伙伴合作,该合作伙伴要求某些字段出现在 JSON 文档的开头。我们在知道初始数据是什么之前就构建了一个文档,并且一开始就找不到插入它的方法。 我们有:

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

有没有办法将 "subobject" 插入到文档的开头,或者将现有的 json_message 附加到 sub_json? 谢谢

由于对象成员的内部表示,这是不可能的。

JsonCpp 使用 std::map。当您使用 FastWriter 序列化为字符串时,如果找到对象 std::vector<JSONCPP_STRING> getMemberNames() 将被调用,这会将 std::map.

的键放入向量中

要达到您的目标,您必须修改 getMemberNames(),将 "priority" 分配给您喜欢的成员(例如 subobject)。