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