nlohmann 的 json 库将数组转换为结构向量

Ank*_*zle 3 c++ json nlohmann-json

假设我有一个如下所示的 json 数组:

[
  {
    "Name": "test",
    "Val": "test_val"
  },
  {
    "Name": "test2",
    "Val": "test_val2"
  }
]
Run Code Online (Sandbox Code Playgroud)

我想将其转换为结构向量:

struct Test {
  string Name;
  string Val;
};
Run Code Online (Sandbox Code Playgroud)

我知道该json.get<>()方法,但不知道如何应用到此。

par*_*omi 5

为了自动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);
}
Run Code Online (Sandbox Code Playgroud)

然后它将按预期工作。

auto parsed = json.get<std::vector<Test>>();
Run Code Online (Sandbox Code Playgroud)

演示: https: //godbolt.org/z/9P1mjO