diff --git a/extras/tests/JsonVariant/add.cpp b/extras/tests/JsonVariant/add.cpp index 526e914d..3f525e25 100644 --- a/extras/tests/JsonVariant/add.cpp +++ b/extras/tests/JsonVariant/add.cpp @@ -43,4 +43,24 @@ TEST_CASE("JsonVariant::add()") { REQUIRE(var.as() == "{\"val\":123}"); } + + SECTION("add JsonDocument to new variant") { + StaticJsonDocument<128> doc2; + doc2["hello"] = "world"; + + var.add(doc2); + + CHECK(var.as() == "[{\"hello\":\"world\"}]"); + CHECK(var.memoryUsage() == JSON_ARRAY_SIZE(1) + JSON_OBJECT_SIZE(1)); + } + + SECTION("add JsonDocument* to new variant") { + StaticJsonDocument<128> doc2; + doc2["hello"] = "world"; + + var.add(&doc2); + + CHECK(var.as() == "[{\"hello\":\"world\"}]"); + CHECK(var.memoryUsage() == JSON_ARRAY_SIZE(1)); + } } diff --git a/src/ArduinoJson/Variant/ConverterImpl.hpp b/src/ArduinoJson/Variant/ConverterImpl.hpp index baf1187a..b6786b51 100644 --- a/src/ArduinoJson/Variant/ConverterImpl.hpp +++ b/src/ArduinoJson/Variant/ConverterImpl.hpp @@ -303,4 +303,9 @@ inline bool canConvertFromJson(VariantConstRef src, const std::string_view&) { #endif +inline void convertToJson(JsonDocument* src, VariantRef dst) { + VariantData* data = getData(dst); + data->setPointer(getData(src->as())); +} + } // namespace ARDUINOJSON_NAMESPACE