| #include <iostream> | |
| #include <nlohmann/json.hpp> | |
| using json = nlohmann::json; | |
| namespace ns | |
| { | |
| enum class Color | |
| { | |
| red, | |
| green, | |
| blue, | |
| unknown // not mapped in JSON_SERIALIZE_ENUM_STRICT | |
| }; | |
| NLOHMANN_JSON_SERIALIZE_ENUM_STRICT(Color, | |
| { | |
| {Color::red, "red"}, | |
| {Color::green, "green"}, | |
| {Color::blue, "blue"} | |
| }) | |
| } // namespace ns | |
| int main() | |
| { | |
| // invalid serialization | |
| try | |
| { | |
| // ns::color::unknown was not mapped in macro | |
| json invalid_serialization = ns::Color::unknown; | |
| } | |
| catch (const json::exception e) | |
| { | |
| std::cout << "deserialization failed: " << e.what() << std::endl; | |
| } | |
| // invalid deserialization | |
| try | |
| { | |
| // what does not map to an enum | |
| json invalid_deserialization("what"); | |
| ns::Color color = invalid_deserialization.get<ns::Color>(); | |
| } | |
| catch (const json::exception e) | |
| { | |
| std::cout << "deserialization failed: " << e.what() << std::endl; | |
| } | |
| return 0; | |
| } |