@@ -165,7 +165,7 @@ class JsonDocument : public detail::VariantOperators<const JsonDocument&> {
165165 template <typename TChar>
166166 ARDUINOJSON_DEPRECATED (" use doc[\" key\" ].is<T>() instead" )
167167 bool containsKey (TChar* key) const {
168- return getVariantImpl ().getMember (detail::adaptString (key)) != 0 ;
168+ return getObjectImpl ().getMember (detail::adaptString (key)) != 0 ;
169169 }
170170
171171 // DEPRECATED: use obj[key].is<T>() instead
@@ -174,7 +174,7 @@ class JsonDocument : public detail::VariantOperators<const JsonDocument&> {
174174 detail::enable_if_t <detail::IsString<TString>::value, int > = 0 >
175175 ARDUINOJSON_DEPRECATED (" use doc[key].is<T>() instead" )
176176 bool containsKey (const TString& key) const {
177- return getVariantImpl ().getMember (detail::adaptString (key)) != 0 ;
177+ return getObjectImpl ().getMember (detail::adaptString (key)) != 0 ;
178178 }
179179
180180 // DEPRECATED: use obj[key].is<T>() instead
@@ -211,8 +211,8 @@ class JsonDocument : public detail::VariantOperators<const JsonDocument&> {
211211 template <typename TString,
212212 detail::enable_if_t <detail::IsString<TString>::value, int > = 0 >
213213 JsonVariantConst operator [](const TString& key) const {
214- return JsonVariantConst (
215- getVariantImpl (). getMember ( detail::adaptString (key)), &resources_);
214+ return JsonVariantConst (getObjectImpl (). getMember ( detail::adaptString (key)),
215+ &resources_);
216216 }
217217
218218 // Gets a root object's member.
@@ -222,8 +222,8 @@ class JsonDocument : public detail::VariantOperators<const JsonDocument&> {
222222 !detail::is_const<TChar>::value,
223223 int > = 0 >
224224 JsonVariantConst operator [](TChar* key) const {
225- return JsonVariantConst (
226- getVariantImpl (). getMember ( detail::adaptString (key)), &resources_);
225+ return JsonVariantConst (getObjectImpl (). getMember ( detail::adaptString (key)),
226+ &resources_);
227227 }
228228
229229 // Gets or sets a root array's element.
@@ -300,15 +300,15 @@ class JsonDocument : public detail::VariantOperators<const JsonDocument&> {
300300 !detail::is_const<TChar>::value,
301301 int > = 0 >
302302 void remove (TChar* key) {
303- getVariantImpl ().removeMember (detail::adaptString (key));
303+ getObjectImpl ().removeMember (detail::adaptString (key));
304304 }
305305
306306 // Removes a member of the root object.
307307 // https://arduinojson.org/v7/api/jsondocument/remove/
308308 template <typename TString,
309309 detail::enable_if_t <detail::IsString<TString>::value, int > = 0 >
310310 void remove (const TString& key) {
311- getVariantImpl ().removeMember (detail::adaptString (key));
311+ getObjectImpl ().removeMember (detail::adaptString (key));
312312 }
313313
314314 // Removes a member of the root object or an element of the root array.
@@ -416,6 +416,10 @@ class JsonDocument : public detail::VariantOperators<const JsonDocument&> {
416416 return &data_;
417417 }
418418
419+ detail::ObjectImpl getObjectImpl () const {
420+ return detail::VariantImpl::asObject (&data_, &resources_);
421+ }
422+
419423 mutable detail::ResourceManager resources_;
420424 mutable detail::VariantData data_;
421425};
0 commit comments