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_cienum class Color 9c5f01b2fSopenharmony_ci{ 10c5f01b2fSopenharmony_ci red, green, blue, unknown 11c5f01b2fSopenharmony_ci}; 12c5f01b2fSopenharmony_ci 13c5f01b2fSopenharmony_ciNLOHMANN_JSON_SERIALIZE_ENUM(Color, 14c5f01b2fSopenharmony_ci{ 15c5f01b2fSopenharmony_ci { Color::unknown, "unknown" }, { Color::red, "red" }, 16c5f01b2fSopenharmony_ci { Color::green, "green" }, { Color::blue, "blue" }, 17c5f01b2fSopenharmony_ci { Color::red, "rot" } // a second conversion for Color::red 18c5f01b2fSopenharmony_ci}) 19c5f01b2fSopenharmony_ci} 20c5f01b2fSopenharmony_ci 21c5f01b2fSopenharmony_ciint main() 22c5f01b2fSopenharmony_ci{ 23c5f01b2fSopenharmony_ci // serialization 24c5f01b2fSopenharmony_ci json j_red = ns::Color::red; 25c5f01b2fSopenharmony_ci std::cout << static_cast<int>(ns::Color::red) << " -> " << j_red << std::endl; 26c5f01b2fSopenharmony_ci 27c5f01b2fSopenharmony_ci // deserialization 28c5f01b2fSopenharmony_ci json j_rot = "rot"; 29c5f01b2fSopenharmony_ci auto rot = j_rot.get<ns::Color>(); 30c5f01b2fSopenharmony_ci auto red = j_red.get<ns::Color>(); 31c5f01b2fSopenharmony_ci std::cout << j_rot << " -> " << static_cast<int>(rot) << std::endl; 32c5f01b2fSopenharmony_ci std::cout << j_red << " -> " << static_cast<int>(red) << std::endl; 33c5f01b2fSopenharmony_ci} 34