JsonBrowser
class JsonBrowser implements IteratorAggregate
Helper class for working with JSON-encoded data
Constants
| OPT_NONEXISTENT_EXCEPTIONS |
Throw exceptions instead of using NULL for nonexistent children & siblings |
| OPT_GET_VALUE |
Get node value instead of JsonBrowser object for __get() |
| OPT_DECODE |
Treat the document definition passed to the constructor as JSON, and decode it |
| OPT_DEFAULT |
Default config options [none] |
| ERR_DECODING_ERROR |
Error decoding JSON data |
| ERR_UNKNOWN_TYPE |
Encountered an unknown type |
| ERR_UNKNOWN_CHILD |
Unknown child |
| ERR_UNKNOWN_SIBLING |
Unknown sibling |
| ERR_UNKNOWN_SELF |
Unknown self |
| ERR_INVALID_CONTAINER_TYPE |
Invalid container type |
| ERR_UNKNOWN_TARGET |
Unknown target |
| TYPE_NULL |
NULL type |
| TYPE_BOOLEAN |
Boolean type |
| TYPE_STRING |
String type |
| TYPE_NUMBER |
Number type |
| TYPE_INTEGER |
Integer type (subset of TYPE_NUMBER) |
| TYPE_ARRAY |
Array type |
| TYPE_OBJECT |
Object type |
Methods
Create a new instance
Dynamically set child node values as object properties
Get the current node as a document root
Attach to an existing decoded document
Check whether a child element exists
Delete the current node value
Delete the value at a given path
Get single node annotation
Get node annotations
Get a child node
Get an iterator handle
Get the JSON source for the current node
Get the node index key (i.e. the child name within the parent node)
Get the node at a given path
Get parent node
Get the node path
Get root node
Get a sibling node
Get the document value type
Get the node value
Get the value at a given path
Test whether the document value is not of a given type
Test whether the document value is of a given type
Load document from a JSON string
Check whether the current node exists in the parent document
Set a node annotation
Set the node value
Set the value at a given path
Check whether a sibling exists
Details
at line 90
__construct(int $options = self::OPT_DEFAULT, mixed $document = null)
Create a new instance
at line 107
__get(JsonBrowser|mixed $key)
Dynamically get child nodes or values as object properties
at line 126
__set(mixed $key, mixed $value)
Dynamically set child node values as object properties
Will set the value on a child node, but will not pad sparse arrays.
at line 138
JsonBrowser
asRoot()
Get the current node as a document root
at line 154
attach(mixed $document)
Attach to an existing decoded document
at line 167
bool
childExists(mixed $key)
Check whether a child element exists
at line 179
deleteValue(bool $deleteEmpty = false)
Delete the current node value
at line 192
deleteValueAt(string $path, bool $deleteEmpty = false)
Delete the value at a given path
at line 205
mixed
getAnnotation(string $name)
Get single node annotation
at line 219
array
getAnnotations(string $name = null)
Get node annotations
at line 232
JsonBrowser
getChild(mixed $key)
Get a child node
at line 251
Iterator
getIterator()
Get an iterator handle
at line 264
string
getJSON(int $options = \JSON_PRETTY_PRINT | \JSON_UNESCAPED_SLASHES | \JSON_UNESCAPED_UNICODE)
Get the JSON source for the current node
at line 276
mixed
getKey()
Get the node index key (i.e. the child name within the parent node)
at line 289
JsonBrowser
getNodeAt(string $path)
Get the node at a given path
at line 308
JsonBrowser|null
getParent()
Get parent node
at line 328
string
getPath()
Get the node path
at line 340
JsonBrowser
getRoot()
Get root node
at line 353
JsonBrowser
getSibling(mixed $key)
Get a sibling node
at line 374
int
getType()
Get the document value type
at line 416
mixed
getValue()
Get the node value
at line 435
mixed
getValueAt(string $path)
Get the value at a given path
at line 459
bool
isEqualTo(JsonBrowser|mixed $value)
Test whether the document value is equal to a given value
Comparisons considered equal: - normal strictly-typed equality (===); - loosely-typed equality (==) where both values are numeric and are not strings; - any object having the same number and value for all properties, as per the above tests.
at line 478
bool
isNotType(int $types)
Test whether the document value is not of a given type
at line 492
bool
isType(int $types, bool $all = false)
Test whether the document value is of a given type
at line 507
loadJSON(string $json)
Load document from a JSON string
at line 540
bool
nodeExists()
Check whether the current node exists in the parent document
at line 554
setAnnotation(string $name, mixed $value, bool $clear = false)
Set a node annotation
at line 567
setValue(mixed $value, bool $padSparseArray = false)
Set the node value
at line 581
setValueAt(string $path, mixed $value, bool $padSparseArray = false)
Set the value at a given path
at line 594
bool
siblingExists(mixed $key)
Check whether a sibling exists