Poco::JSON

class Array

Library: JSON
Package: JSON
Header: Poco/JSON/Array.h

Description

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 Summary

Member Functions: add, begin, clear, end, get, getArray, getElement, getObject, isArray, isNull, isObject, makeArray, optElement, remove, set, size, stringify

Types

ConstIterator

typedef std::vector < Dynamic::Var >::const_iterator ConstIterator;

Iterator

typedef std::vector < Dynamic::Var >::iterator Iterator;

Ptr

typedef SharedPtr < Array > Ptr;

ValueVec

typedef std::vector < Dynamic::Var > ValueVec;

Constructors

Array

Array();

Default constructor

Array

Array(
    const Array & copy
);

Copy Constructor

Destructor

~Array virtual

virtual ~Array();

Destructor

Member Functions

add inline

void add(
    const Dynamic::Var & value
);

Add the given value to the array

begin inline

ValueVec::const_iterator begin() const;

Returns iterator

clear

void clear();

Clears the contents of the array.

end inline

ValueVec::const_iterator end() const;

Returns iterator

get

Dynamic::Var get(
    unsigned int index
) const;

Retrieves an element. Will return an empty value when the element doesn't exist.

getArray

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.

getElement inline

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.

getObject

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.

isArray inline

bool isArray(
    unsigned int index
) const;

Returns true when the element is an array

isArray

bool isArray(
    const Dynamic::Var & value
) const;

Returns true when the element is an array

isArray

bool isArray(
    ConstIterator & value
) const;

Returns true when the element is an array

isNull

bool isNull(
    unsigned int index
) const;

Returns true when the element is null or when the element doesn't exist.

isObject

bool isObject(
    unsigned int index
) const;

Returns true when the element is an object

isObject

bool isObject(
    const Dynamic::Var & value
) const;

Returns true when the element is an object

isObject

bool isObject(
    ConstIterator & value
) const;

Returns true when the element is an object

makeArray static

static Poco::Dynamic::Array makeArray(
    const JSON::Array::Ptr & arr
);

Utility function for creation of array.

optElement inline

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

remove inline

void remove(
    unsigned int index
);

Removes the element on the given index.

set inline

void set(
    unsigned int index,
    const Dynamic::Var & value
);

Update the element on the given index to specified value

size inline

std::size_t size() const;

Returns the size of the array

stringify

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.