39 lines
1.1 KiB
PHP
39 lines
1.1 KiB
PHP
<?php
|
|
// JsonSerialiser.php
|
|
// Created: 2022-01-13
|
|
// Updated: 2022-02-27
|
|
|
|
namespace Index\Serialisation;
|
|
|
|
use Index\WString;
|
|
use Index\IO\Stream;
|
|
|
|
/**
|
|
* Provides a JSON serialiser.
|
|
*/
|
|
class JsonSerialiser extends Serialiser {
|
|
private JsonSerialiserSettings $settings;
|
|
|
|
/**
|
|
* Creates a new JSON serialiser instance.
|
|
*
|
|
* @param JsonSerialiserSettings|null $settings Settings to be used with this serialiser.
|
|
*/
|
|
public function __construct(?JsonSerialiserSettings $settings = null) {
|
|
$this->settings = $settings ?? new JsonSerialiserSettings;
|
|
}
|
|
|
|
public function serialise(mixed $input): string {
|
|
$output = json_encode($input, $this->settings->getFlags(), $this->settings->getMaxDepth());
|
|
if($output === false)
|
|
$output = '';
|
|
return $output;
|
|
}
|
|
|
|
public function deserialise(Stream|string $input): mixed {
|
|
//if($input instanceof WString)
|
|
// $input = $input->convertEncoding('utf-8');
|
|
return json_decode((string)$input, false, $this->settings->getMaxDepth(), $this->settings->getFlags());
|
|
}
|
|
}
|