1#include <iostream> 2#include <optional> 3#include <nlohmann/json.hpp> 4 5// partial specialization (see https://json.nlohmann.me/features/arbitrary_types/) 6NLOHMANN_JSON_NAMESPACE_BEGIN 7template <typename T> 8struct adl_serializer<std::optional<T>> 9{ 10 static void to_json(json& j, const std::optional<T>& opt) 11 { 12 if (opt == std::nullopt) 13 { 14 j = nullptr; 15 } 16 else 17 { 18 j = *opt; 19 } 20 } 21}; 22NLOHMANN_JSON_NAMESPACE_END 23 24int main() 25{ 26 std::optional<int> o1 = 1; 27 std::optional<int> o2 = std::nullopt; 28 29 NLOHMANN_JSON_NAMESPACE::json j; 30 j.push_back(o1); 31 j.push_back(o2); 32 std::cout << j << std::endl; 33} 34