Библиотека json nlohmann конвертирует массив в вектор структур - PullRequest
2 голосов
/ 20 февраля 2020

Скажем, у меня есть массив json, который выглядит следующим образом:

[
  {
    "Name": "test",
    "Val": "test_val"
  },
  {
    "Name": "test2",
    "Val": "test_val2"
  }
]

Я хочу преобразовать это в вектор структур:

struct Test {
  string Name;
  string Val;
};

Я знаю о json.get<>() метод, но не знаю, как применить это к этому.

1 Ответ

3 голосов
/ 20 февраля 2020

Для работы автомата c get<> необходимо предоставить отображение между JSON и вашей структурой:

void from_json(const nlohmann::json& j, Test& p) {
    j.at("Name").get_to(p.Name);
    j.at("Val").get_to(p.Val);
}

Тогда все будет работать как положено.

auto parsed = json.get<std::vector<Test>>();

Демо: https://godbolt.org/z/9P1mjO

...