@@ -24,9 +24,10 @@ class JsonArrayConst : public detail::VariantOperators<JsonArrayConst> {
2424 // Returns an iterator to the first element of the array.
2525 // https://arduinojson.org/v7/api/jsonarrayconst/begin/
2626 iterator begin () const {
27- if (!data_)
27+ auto array = detail::VariantData::asArray (data_);
28+ if (!array)
2829 return iterator ();
29- return iterator (data_ ->createIterator (resources_), resources_);
30+ return iterator (array ->createIterator (resources_), resources_);
3031 }
3132
3233 // Returns an iterator to the element following the last element of the array.
@@ -39,7 +40,7 @@ class JsonArrayConst : public detail::VariantOperators<JsonArrayConst> {
3940 JsonArrayConst () : data_(0 ), resources_(0 ) {}
4041
4142 // INTERNAL USE ONLY
42- JsonArrayConst (const detail::ArrayData * data,
43+ JsonArrayConst (const detail::VariantData * data,
4344 const detail::ResourceManager* resources)
4445 : data_(data), resources_(resources) {}
4546
@@ -49,7 +50,7 @@ class JsonArrayConst : public detail::VariantOperators<JsonArrayConst> {
4950 detail::enable_if_t <detail::is_integral<T>::value, int > = 0 >
5051 JsonVariantConst operator [](T index) const {
5152 return JsonVariantConst (
52- detail::ArrayData ::getElement (data_, size_t (index), resources_),
53+ detail::VariantData ::getElement (data_, size_t (index), resources_),
5354 resources_);
5455 }
5556
@@ -71,13 +72,13 @@ class JsonArrayConst : public detail::VariantOperators<JsonArrayConst> {
7172 // Returns true if the reference is unbound.
7273 // https://arduinojson.org/v7/api/jsonarrayconst/isnull/
7374 bool isNull () const {
74- return data_ == 0 ;
75+ return ! data_ || !data_-> isArray () ;
7576 }
7677
7778 // Returns true if the reference is bound.
7879 // https://arduinojson.org/v7/api/jsonarrayconst/isnull/
7980 operator bool () const {
80- return data_ != 0 ;
81+ return ! isNull () ;
8182 }
8283
8384 // Returns the depth (nesting level) of the array.
@@ -100,10 +101,10 @@ class JsonArrayConst : public detail::VariantOperators<JsonArrayConst> {
100101
101102 private:
102103 const detail::VariantData* getData () const {
103- return collectionToVariant ( data_) ;
104+ return data_;
104105 }
105106
106- const detail::ArrayData * data_;
107+ const detail::VariantData * data_;
107108 const detail::ResourceManager* resources_;
108109};
109110
0 commit comments