@@ -22,7 +22,7 @@ class JsonObjectConst : public detail::VariantOperators<JsonObjectConst> {
2222 JsonObjectConst () : data_(0 ), resources_(0 ) {}
2323
2424 // INTERNAL USE ONLY
25- JsonObjectConst (const detail::ObjectData * data,
25+ JsonObjectConst (const detail::VariantData * data,
2626 const detail::ResourceManager* resources)
2727 : data_(data), resources_(resources) {}
2828
@@ -33,13 +33,13 @@ class JsonObjectConst : public detail::VariantOperators<JsonObjectConst> {
3333 // Returns true if the reference is unbound.
3434 // https://arduinojson.org/v7/api/jsonobjectconst/isnull/
3535 bool isNull () const {
36- return data_ == 0 ;
36+ return ! data_ || !data_-> isObject () ;
3737 }
3838
3939 // Returns true if the reference is bound.
4040 // https://arduinojson.org/v7/api/jsonobjectconst/isnull/
4141 operator bool () const {
42- return data_ != 0 ;
42+ return ! isNull () ;
4343 }
4444
4545 // Returns the depth (nesting level) of the object.
@@ -57,9 +57,10 @@ class JsonObjectConst : public detail::VariantOperators<JsonObjectConst> {
5757 // Returns an iterator to the first key-value pair of the object.
5858 // https://arduinojson.org/v7/api/jsonobjectconst/begin/
5959 iterator begin () const {
60- if (!data_)
60+ auto obj = detail::VariantData::asObject (data_);
61+ if (!obj)
6162 return iterator ();
62- return iterator (data_ ->createIterator (resources_), resources_);
63+ return iterator (obj ->createIterator (resources_), resources_);
6364 }
6465
6566 // Returns an iterator following the last key-value pair of the object.
@@ -74,17 +75,17 @@ class JsonObjectConst : public detail::VariantOperators<JsonObjectConst> {
7475 detail::enable_if_t <detail::IsString<TString>::value, int > = 0 >
7576 ARDUINOJSON_DEPRECATED (" use obj[key].is<T>() instead" )
7677 bool containsKey (const TString& key) const {
77- return detail::ObjectData ::getMember (data_, detail::adaptString (key),
78- resources_) != 0 ;
78+ return detail::VariantData ::getMember (data_, detail::adaptString (key),
79+ resources_) != 0 ;
7980 }
8081
8182 // DEPRECATED: use obj["key"].is<T>() instead
8283 // https://arduinojson.org/v7/api/jsonobjectconst/containskey/
8384 template <typename TChar>
8485 ARDUINOJSON_DEPRECATED (" use obj[\" key\" ].is<T>() instead" )
8586 bool containsKey (TChar* key) const {
86- return detail::ObjectData ::getMember (data_, detail::adaptString (key),
87- resources_) != 0 ;
87+ return detail::VariantData ::getMember (data_, detail::adaptString (key),
88+ resources_) != 0 ;
8889 }
8990
9091 // DEPRECATED: use obj[key].is<T>() instead
@@ -101,7 +102,7 @@ class JsonObjectConst : public detail::VariantOperators<JsonObjectConst> {
101102 template <typename TString,
102103 detail::enable_if_t <detail::IsString<TString>::value, int > = 0 >
103104 JsonVariantConst operator [](const TString& key) const {
104- return JsonVariantConst (detail::ObjectData ::getMember (
105+ return JsonVariantConst (detail::VariantData ::getMember (
105106 data_, detail::adaptString (key), resources_),
106107 resources_);
107108 }
@@ -113,7 +114,7 @@ class JsonObjectConst : public detail::VariantOperators<JsonObjectConst> {
113114 !detail::is_const<TChar>::value,
114115 int > = 0 >
115116 JsonVariantConst operator [](TChar* key) const {
116- return JsonVariantConst (detail::ObjectData ::getMember (
117+ return JsonVariantConst (detail::VariantData ::getMember (
117118 data_, detail::adaptString (key), resources_),
118119 resources_);
119120 }
@@ -137,10 +138,10 @@ class JsonObjectConst : public detail::VariantOperators<JsonObjectConst> {
137138
138139 private:
139140 const detail::VariantData* getData () const {
140- return collectionToVariant ( data_) ;
141+ return data_;
141142 }
142143
143- const detail::ObjectData * data_;
144+ const detail::VariantData * data_;
144145 const detail::ResourceManager* resources_;
145146};
146147
0 commit comments