例如,
我正在使用以下代码构建json消息:

json11::Json my_json = json11::Json::object{
    { "key_val1", val1},
    { "key_val2", val2},
    { "key_val3", val3},
    { "key_val4", val4 }
};

std::string message = my_json.dump();

但是,如果我想让此json11对象根据某些条件包含不同的属性值对,则必须重复相同的代码多次。

有什么方法可以将属性值对附加到现有的json11对象上吗?
这样我就可以构建基础对象,然后根据需要添加必要的属性。

最佳答案

是的,有可能。

json11::Json::object my_json = json11::Json::object{
    { "key_val1", val1},
    { "key_val2", val2},
    { "key_val3", val3},
    { "key_val4", val4 }
};

my_json["newattribute1"] = "newValue1";
my_json["newattribute2"] = 2;

json11::Json json_final = json11::Json{ my_json };
std::string message = json_final .dump();

在您的情况下,my_json是json11::Json的实例。在我的情况下,my_json是json11::Json::object的实例。

json11::Json::object最初是std::map。

09-20 10:18