mirror of
https://gh.wpcy.net/https://github.com/aspirepress/AspireCloud.git
synced 2026-05-31 00:04:27 +08:00
63 lines
1.8 KiB
PHP
63 lines
1.8 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace App\Utils;
|
|
|
|
use Safe\Exceptions\JsonException;
|
|
use stdClass;
|
|
|
|
class JSON
|
|
{
|
|
public const DEFAULT_JSON_OPTIONS = JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE;
|
|
|
|
/**
|
|
* @param array<string, mixed> $value
|
|
* @throws JsonException
|
|
*/
|
|
public static function fromAssoc(array $value, int $flags = self::DEFAULT_JSON_OPTIONS, int $depth = 512): string
|
|
{
|
|
return static::encode($value, $flags, $depth);
|
|
}
|
|
|
|
/**
|
|
* @return array<string, mixed>
|
|
* @throws JsonException
|
|
*/
|
|
public static function toAssoc(string $json, int $depth = 512, int $flags = self::DEFAULT_JSON_OPTIONS): array
|
|
{
|
|
return static::decode($json, true, $depth, $flags);
|
|
}
|
|
|
|
/** @return array<string, mixed>|null */
|
|
public static function tryToAssoc(string $json, int $depth = 512, int $flags = self::DEFAULT_JSON_OPTIONS): ?array
|
|
{
|
|
try {
|
|
return static::toAssoc($json, $depth, $flags);
|
|
} catch (JsonException) {
|
|
return null;
|
|
}
|
|
}
|
|
|
|
/** @throws JsonException */
|
|
public static function toObject(string $json, int $depth = 512, int $flags = self::DEFAULT_JSON_OPTIONS): stdClass
|
|
{
|
|
return static::decode($json, false, $depth, $flags);
|
|
}
|
|
|
|
/** @throws JsonException */
|
|
public static function encode(mixed $value, int $flags = self::DEFAULT_JSON_OPTIONS, int $depth = 512): string
|
|
{
|
|
return \Safe\json_encode($value, $flags, $depth);
|
|
}
|
|
|
|
/** @throws JsonException */
|
|
public static function decode(
|
|
string $json,
|
|
bool $assoc = false,
|
|
int $depth = 512,
|
|
int $flags = self::DEFAULT_JSON_OPTIONS,
|
|
): mixed {
|
|
return \Safe\json_decode($json, $assoc, $depth, $flags);
|
|
}
|
|
}
|