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

→ Ссылка