1#include <iostream> 2#include <nlohmann/json.hpp> 3 4using json = nlohmann::json; 5 6namespace ns 7{ 8enum class Color 9{ 10 red, green, blue, unknown 11}; 12 13NLOHMANN_JSON_SERIALIZE_ENUM(Color, 14{ 15 { Color::unknown, "unknown" }, { Color::red, "red" }, 16 { Color::green, "green" }, { Color::blue, "blue" }, 17 { Color::red, "rot" } // a second conversion for Color::red 18}) 19} 20 21int main() 22{ 23 // serialization 24 json j_red = ns::Color::red; 25 std::cout << static_cast<int>(ns::Color::red) << " -> " << j_red << std::endl; 26 27 // deserialization 28 json j_rot = "rot"; 29 auto rot = j_rot.get<ns::Color>(); 30 auto red = j_red.get<ns::Color>(); 31 std::cout << j_rot << " -> " << static_cast<int>(rot) << std::endl; 32 std::cout << j_red << " -> " << static_cast<int>(red) << std::endl; 33} 34