// ArduinoJson - https://arduinojson.org // Copyright © 2014-2025, Benoit BLANCHON // MIT License #include #include template class Nullable { public: Nullable() : value_{} {} Nullable(T value) : value_{value} {} operator T() const { return value_; } operator T&() { return value_; } bool is_valid() const { return value_ != invalid_value_; } T value() const { return value_; } private: T value_; static T invalid_value_; }; template <> float Nullable::invalid_value_ = std::numeric_limits::lowest(); template void convertToJson(const Nullable& src, JsonVariant dst) { if (src.is_valid()) { dst.set(src.value()); } else { dst.clear(); } } TEST_CASE("Issue #2129") { Nullable nullable_value = Nullable{123.4f}; JsonDocument doc; doc["value"] = nullable_value; REQUIRE(doc["value"].as() == Approx(123.4f)); }