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