| #include <iostream> |
| #include <optional> |
| #include <nlohmann/json.hpp> |
| |
| // partial specialization (see https://json.nlohmann.me/features/arbitrary_types/) |
| NLOHMANN_JSON_NAMESPACE_BEGIN |
| template <typename T> |
| struct adl_serializer<std::optional<T>> |
| { |
| static void to_json(json& j, const std::optional<T>& opt) |
| { |
| if (opt == std::nullopt) |
| { |
| j = nullptr; |
| } |
| else |
| { |
| j = *opt; |
| } |
| } |
| }; |
| NLOHMANN_JSON_NAMESPACE_END |
| |
| int main() |
| { |
| std::optional<int> o1 = 1; |
| std::optional<int> o2 = std::nullopt; |
| |
| NLOHMANN_JSON_NAMESPACE::json j; |
| j.push_back(o1); |
| j.push_back(o2); |
| std::cout << j << std::endl; |
| } |