Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
212 views
in Technique[技术] by (71.8m points)

c++ - nlohmann's json library convert an array to a vector of structs

Say I have a json array that looks like this:

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

I want to convert this into a vector of structs:

struct Test {
  string Name;
  string Val;
};

I know about the json.get<>() method, but do not know how to apply that to this.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

For the automatic get<> to work, you need to provide a mapping between JSON and your struct:

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

Then it will work as expected.

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

Demo: https://godbolt.org/z/9P1mjO


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...