diff --git a/extras/tests/JsonVariant/nesting.cpp b/extras/tests/JsonVariant/nesting.cpp index 3e936fbe..29e7d1ff 100644 --- a/extras/tests/JsonVariant/nesting.cpp +++ b/extras/tests/JsonVariant/nesting.cpp @@ -28,4 +28,12 @@ TEST_CASE("JsonVariant::nesting()") { var.to(); REQUIRE(var.nesting() == 1); } + + SECTION("return depth of linked array") { + StaticJsonDocument<128> doc2; + doc2[0][0] = 42; + var.link(doc2); + + CHECK(var.nesting() == 2); + } } diff --git a/src/ArduinoJson/Variant/VariantData.hpp b/src/ArduinoJson/Variant/VariantData.hpp index d872c964..da7bf835 100644 --- a/src/ArduinoJson/Variant/VariantData.hpp +++ b/src/ArduinoJson/Variant/VariantData.hpp @@ -285,13 +285,15 @@ class VariantData { } size_t nesting() const { + if (isPointer()) + return _content.asPointer->nesting(); return isCollection() ? _content.asCollection.nesting() : 0; } size_t size() const { - return isPointer() ? _content.asPointer->size() - : isCollection() ? _content.asCollection.size() - : 0; + if (isPointer()) + return _content.asPointer->size(); + return isCollection() ? _content.asCollection.size() : 0; } VariantData *addElement(MemoryPool *pool) {