1 #include <iostream>
2 #include <nlohmann/json.hpp>
3 
4 using json = nlohmann::json;
5 
6 namespace ns
7 {
8 enum class Color
9 {
10     red, green, blue, unknown
11 };
12 
13 NLOHMANN_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 
main()21 int 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