JsonObject::createNestedArray() returns JsonArray::invalid() if key is null

This commit is contained in:
Benoit Blanchon
2023-03-16 17:52:34 +01:00
parent 63c89f166d
commit 46bd98fd10
4 changed files with 29 additions and 3 deletions

View File

@ -5,6 +5,7 @@ HEAD
----
* `JsonObject::createNestedObject()` returns `JsonObject::invalid()` if key is null (issue #1891)
* `JsonObject::createNestedArray()` returns `JsonArray::invalid()` if key is null
v5.13.5
-------
@ -492,4 +493,3 @@ v4.0
> ### BREAKING CHANGES :warning:
>
> API changed significantly since v3, see [Migrating code to the new API](https://arduinojson.org/doc/migration/).

View File

@ -14,8 +14,10 @@ template <typename TStringRef>
inline JsonArray &JsonObject::createNestedArray_impl(TStringRef key) {
if (!_buffer) return JsonArray::invalid();
JsonArray &array = _buffer->createArray();
set(key, array);
return array;
if (set(key, array))
return array;
else
return JsonArray::invalid();
}
template <typename TStringRef>

View File

@ -5,6 +5,7 @@
add_executable(JsonObjectTests
basics.cpp
containsKey.cpp
createNestedArray.cpp
createNestedObject.cpp
get.cpp
invalid.cpp

View File

@ -0,0 +1,23 @@
// ArduinoJson - arduinojson.org
// Copyright Benoit Blanchon 2014-2023
// MIT License
#include <ArduinoJson.h>
#include <catch.hpp>
TEST_CASE("JsonObject::createNestedArray()") {
DynamicJsonBuffer _jsonBuffer;
JsonObject& _object = _jsonBuffer.createObject();
SECTION("success() should return true if key is non-null") {
JsonArray& arr = _object.createNestedArray("key");
REQUIRE(arr.success() == true);
}
SECTION("success() should return false if key is null") {
const char* null = 0;
JsonArray& arr = _object.createNestedArray(null);
REQUIRE(arr.success() == false);
}
}