2016-07-31 3 views
2

Например, Я строю сообщение JSon используя следующий код:Как добавить пару атрибут-значение в существующий объект json11 (C++)?

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? Так что я могу построить базовый объект, а затем добавить необходимые атрибуты по запросу.

ответ

3

Да, это возможно.

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 ::.

json11 :: Json :: объект изначально является std :: map.

Смежные вопросы