This library provides infrastructure for JSON documents processing.
- PHP 7.3+
- JSON exception (ext-json)
ValueInterface can be used to represent JSON document or it's part. There is a set of descendant interfaces that provide access to typed values:
ScalarValueInterfaceArrayValueInterfaceObjectValueInterface
NodeValueInterface includes information about value's path in the document, so it can be used to represent values that really exist in some JSON document. Calculated values that have no paths should implement basic ValueInterface.
This type of objects is intended to create node values from some source. This library includes two implementations of node value factories:
DecodedJson\NodeValueFactorycreates node value from raw PHP values (produced byjson_decode()function or created manually).EncodedJson\NodeValueFactorycreates node value directly from encoded JSON string.
<?php use Remorhaz\JSON\Data\Value\DecodedJson; use Remorhaz\JSON\Data\Value\EncodedJson; // Both values represent same JSON document: $value1 = EncodedJson\NodeValueFactory::create()->createValue('{"a":"b"}'); $value2 = DecodedJson\NodeValueFactory::create()->createValue((object) ['a' => 'b']);JSON document can be represented as a stream of events. These events implement descendants of EventInterface. Such events can be emitted by any custom JSON parser, but this library also implements standard ValueWalker object that converts any NodeValueInterface to event stream.
Value walker is also able to use mutations to alter the events. There're no standard mutations, you must implement MutationInterface by yourself.
You can also use EventDecoder object to convert event stream back to NodeValueInterface.
Library includes a set of ValueExporterInterface implementations that allow to export ValueInterface to another representation:
ValueEncoderconverts value to JSON-encoded string.ValueDecoderconverts value to raw PHP values.
This library is licensed under the MIT License. Please see LICENSE for more information.
