index/src/Serialisation/JsonSerialiser.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());
}
}