Значение по умолчанию в C++
Внешний файл редко содержит полный набор ключей.
Метод value у nlohmann::json
принимает имя поля и запасной литерал:
если ключ отсутствует, возвращается
второй аргумент без исключения. Так
задают город по умолчанию:
#include <iostream>
#include <nlohmann/json.hpp>
#include <string>
int main() {
std::string raw = R"({"font_size":16})";
nlohmann::json prefs = nlohmann::json::parse(raw);
std::string theme = prefs.value("theme", "light");
int font_size = prefs.at("font_size").get<int>();
std::cout << theme << "\n";
std::cout << font_size << "\n";
return 0;
}
Ключ theme в тексте не встречается,
поэтому value отдает "light".
Для обязательного font_size по-прежнему
используют at или [].
Тот же прием подходит для строки
"none", когда адрес не указан:
#include <iostream>
#include <nlohmann/json.hpp>
#include <string>
int main() {
nlohmann::json profile = nlohmann::json::parse(R"({"name":"Ann"})");
std::string city = profile.value("city", "none");
std::cout << city << "\n";
return 0;
}
Из {"priority":2} возьмите канал
через value с запасом "email"
и приоритет через at. Выведите
оба значения на отдельных строках.
Разберите {"salary":900}, прочитайте
роль с default "intern" и зарплату.
Выведите роль, пробел и зарплату в одной
строке.