From 0bcf14bb893a294a6bfdebc5703c81068f144a74 Mon Sep 17 00:00:00 2001 From: Benoit Blanchon Date: Thu, 10 Mar 2022 13:50:33 +0100 Subject: [PATCH] Support JsonDocument* --- extras/tests/JsonVariant/add.cpp | 20 ++++++++++++++++++++ src/ArduinoJson/Variant/ConverterImpl.hpp | 5 +++++ 2 files changed, 25 insertions(+) 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