mirror of
https://github.com/nlohmann/json.git
synced 2026-05-19 20:55:24 +00:00
54 lines
994 B
C++
54 lines
994 B
C++
#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;
|
|
}
|