1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- #include <iostream>
- #include <nlohmann/json.hpp>
- using json = nlohmann::json;
- using namespace nlohmann::literals;
- namespace ns
- {
- struct person
- {
- std::string name;
- std::string address;
- int age;
- };
- void to_json(nlohmann::json& nlohmann_json_j, const person& nlohmann_json_t)
- {
- nlohmann_json_j["name"] = nlohmann_json_t.name;
- nlohmann_json_j["address"] = nlohmann_json_t.address;
- nlohmann_json_j["age"] = nlohmann_json_t.age;
- }
- void from_json(const nlohmann::json& nlohmann_json_j, person& nlohmann_json_t)
- {
- nlohmann_json_t.name = nlohmann_json_j.at("name");
- nlohmann_json_t.address = nlohmann_json_j.at("address");
- nlohmann_json_t.age = nlohmann_json_j.at("age");
- }
- } // namespace ns
- int main()
- {
- ns::person p = {"Ned Flanders", "744 Evergreen Terrace", 60};
- // serialization: person -> json
- json j = p;
- std::cout << "serialization: " << j << std::endl;
- // deserialization: json -> person
- json j2 = R"({"address": "742 Evergreen Terrace", "age": 40, "name": "Homer Simpson"})"_json;
- auto p2 = j2.get<ns::person>();
- // incomplete deserialization:
- json j3 = R"({"address": "742 Evergreen Terrace", "name": "Maggie Simpson"})"_json;
- try
- {
- auto p3 = j3.get<ns::person>();
- }
- catch (json::exception& e)
- {
- std::cout << "deserialization failed: " << e.what() << std::endl;
- }
- }
|