1c5f01b2fSopenharmony_ci#include <iostream>
2c5f01b2fSopenharmony_ci#include <nlohmann/json.hpp>
3c5f01b2fSopenharmony_ci
4c5f01b2fSopenharmony_ciusing json = nlohmann::json;
5c5f01b2fSopenharmony_ci
6c5f01b2fSopenharmony_cinamespace ns
7c5f01b2fSopenharmony_ci{
8c5f01b2fSopenharmony_ci// a simple struct to model a person
9c5f01b2fSopenharmony_cistruct person
10c5f01b2fSopenharmony_ci{
11c5f01b2fSopenharmony_ci    std::string name;
12c5f01b2fSopenharmony_ci    std::string address;
13c5f01b2fSopenharmony_ci    int age;
14c5f01b2fSopenharmony_ci};
15c5f01b2fSopenharmony_ci} // namespace ns
16c5f01b2fSopenharmony_ci
17c5f01b2fSopenharmony_cinamespace ns
18c5f01b2fSopenharmony_ci{
19c5f01b2fSopenharmony_civoid from_json(const json& j, person& p)
20c5f01b2fSopenharmony_ci{
21c5f01b2fSopenharmony_ci    j.at("name").get_to(p.name);
22c5f01b2fSopenharmony_ci    j.at("address").get_to(p.address);
23c5f01b2fSopenharmony_ci    j.at("age").get_to(p.age);
24c5f01b2fSopenharmony_ci}
25c5f01b2fSopenharmony_ci} // namespace ns
26c5f01b2fSopenharmony_ci
27c5f01b2fSopenharmony_ciint main()
28c5f01b2fSopenharmony_ci{
29c5f01b2fSopenharmony_ci    json j;
30c5f01b2fSopenharmony_ci    j["name"] = "Ned Flanders";
31c5f01b2fSopenharmony_ci    j["address"] = "744 Evergreen Terrace";
32c5f01b2fSopenharmony_ci    j["age"] = 60;
33c5f01b2fSopenharmony_ci
34c5f01b2fSopenharmony_ci    auto p = j.get<ns::person>();
35c5f01b2fSopenharmony_ci
36c5f01b2fSopenharmony_ci    std::cout << p.name << " (" << p.age << ") lives in " << p.address << std::endl;
37c5f01b2fSopenharmony_ci}
38