Mainly to handle errors json encode/decode and encapsulate options to encode easily.
use BernardoSecades\Json\Json;
...
Json::decode($value);
Json::encode($value);
Options in json encode:
use BernardoSecades\Json\Json;
use BernardoSecades\Json\Option;
use BernardoSecades\Json\ArrayOption;
...
$options = new ArrayOption();
$options[] = Option::JSON_UNESCAPED_UNICODE(); // Use enum object
$options[] = Option::JSON_UNESCAPED_SLASHES();
$options[] = Option::JSON_NUMERIC_CHECK();
Json::encode($value, $options);
use BernardoSecades\Json\Json;
use BernardoSecades\Json\DecodeException;
use BernardoSecades\Json\EncodeException;
...
try {
Json::decode($value);
} catch (DecodeException $exception) {
// do something
}
// or
if (!Json::isValid($value)) {
// do something
}
try {
Json::encode($value);
} catch (EncodeException $exception) {
// do something
}
Get info from Encode/Decode exception
use BernardoSecades\Json\Json;
use BernardoSecades\Json\DecodeException;
...
try {
Json::decode($value);
} catch (DecodeException $exception) {
$errorMessage = sprintf('%s , json error code %d',
$exception->getMessage(), // see http://php.net/manual/en/function.json-last-error-msg.php
$exception->getCode(), // see http://php.net/manual/en/json.constants.php
);
$this->logger->error($errorMessage);
// do something more
}
composer require bernardosecades/php-json