Как получить вектор структур данных из объекта nlohmann::json C++
Имеется структура
struct Color {
uint8_t background;
uint8_t foreground;
Color() :
backgroung(0), foreground(15)
{}
Color(const uint8_t& bg, const uint8_t& fg) :
background(bg), foreground(fg)
{}
}
И объект nlohmann::json _j
std::string obj =
"{ \"colors\": [ {\"background\": 0, \"foreground\": 1}, {\"background\": 0, \"foreground\": 4} ] }";
nlohmann::json _j = nlohmann::json::parse(obj);
Требуется в вектор :
std::vector<Color> vColors;
Поместить "colors" из объекта "_j"
Ответы (1 шт):
Автор решения: KoVadim
→ Ссылка
где то так
for (auto &color : obj["colors"]) {
int c = color.value("background", 0);
int f = color.value("foreground", 0);
vColors.push_back(Color(c,f));
}
там может будут проблемы с преобразованием типов в конструкторе Color, но думаю, с этим справитесь
я использую синтаксис с value, потому что он в случае отсутствия ключа, возьмет дефолтное значение, которое написано в скобках.