Library: JSON
Package: JSON
Header: Poco/JSON/Array.h
Represents a JSON array. JSON array provides a representation based on shared pointers and optimized for performance. It is possible to convert object to Poco::Dynamic::Array. Conversion requires copying and therefore has performance penalty; the benefit is in improved syntax, eg:
// use pointers to avoid copying using namespace Poco::JSON; std::string json = "[ {\"test\" : 0}, { \"test1\" : [1, 2, 3], \"test2\" : 4 } ]"; Parser parser; Var result = parser.parse(json); Array::Ptr arr = result.extract<Array::Ptr>(); Object::Ptr object = arr->getObject(0); // object == {\"test\" : 0} int i = object->getValue<int>("test"); // i == 0; Object::Ptr subObject = *arr->getObject(1); // subObject == {\"test\" : 0} Array subArr::Ptr = subObject->getArray("test1"); // subArr == [1, 2, 3] i = result = subArr->get(0); // i == 1; // copy/convert to Poco::Dynamic::Array Poco::Dynamic::Array da = *arr; i = da[0]["test"]; // i == 0 i = da[1]["test1"][1]; // i == 2 i = da[1]["test2"]; // i == 4
Member Functions: add, begin, clear, end, get, getArray, getElement, getObject, isArray, isNull, isObject, makeArray, optElement, remove, set, size, stringify
typedef std::vector < Dynamic::Var >::const_iterator ConstIterator;
typedef std::vector < Dynamic::Var >::iterator Iterator;
typedef SharedPtr < Array > Ptr;
typedef std::vector < Dynamic::Var > ValueVec;
Array();
Default constructor
Copy Constructor
virtual ~Array();
Destructor
void add(
const Dynamic::Var & value
);
Add the given value to the array
ValueVec::const_iterator begin() const;
Returns iterator
void clear();
Clears the contents of the array.
ValueVec::const_iterator end() const;
Returns iterator
Dynamic::Var get(
unsigned int index
) const;
Retrieves an element. Will return an empty value when the element doesn't exist.
Array::Ptr getArray(
unsigned int index
) const;
Retrieves an array. When the element is not an array or doesn't exist, an empty SharedPtr is returned.
template < typename T > T getElement(
unsigned int index
) const;
Retrieves an element and tries to convert it to the template type. The convert<T> method of Dynamic is called which can also throw exceptions for invalid values. Note: This will not work for an array or an object.
SharedPtr < Object > getObject(
unsigned int index
) const;
Retrieves an object. When the element is not an object or doesn't exist, an empty SharedPtr is returned.
bool isArray(
unsigned int index
) const;
Returns true when the element is an array
bool isArray(
const Dynamic::Var & value
) const;
Returns true when the element is an array
bool isArray(
ConstIterator & value
) const;
Returns true when the element is an array
bool isNull(
unsigned int index
) const;
Returns true when the element is null or when the element doesn't exist.
bool isObject(
unsigned int index
) const;
Returns true when the element is an object
bool isObject(
const Dynamic::Var & value
) const;
Returns true when the element is an object
bool isObject(
ConstIterator & value
) const;
Returns true when the element is an object
static Poco::Dynamic::Array makeArray(
const JSON::Array::Ptr & arr
);
Utility function for creation of array.
template < typename T > T optElement(
unsigned int index,
const T & def
) const;
Returns the element at the given index. When the element is null, doesn't exist or can't be converted to the given type, the default value will be returned
void remove(
unsigned int index
);
Removes the element on the given index.
void set(
unsigned int index,
const Dynamic::Var & value
);
Update the element on the given index to specified value
std::size_t size() const;
Returns the size of the array
void stringify(
std::ostream & out,
unsigned int indent = 0,
int step = - 1
) const;
Prints the array to out. When indent has zero value, the array will be printed without newline breaks and spaces between elements.