123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- <?php
- declare(strict_types=1);
- /**
- * This file is part of Hyperf.
- *
- * @link https://www.hyperf.io
- * @document https://hyperf.wiki
- * @contact group@hyperf.io
- * @license https://github.com/hyperf/hyperf/blob/master/LICENSE
- */
- namespace Hyperf\Codec;
- use Hyperf\Codec\Exception\InvalidArgumentException;
- use Hyperf\Contract\Arrayable;
- use Hyperf\Contract\Jsonable;
- use Throwable;
- class Json
- {
- /**
- * @throws InvalidArgumentException
- */
- public static function encode(mixed $data, int $flags = JSON_UNESCAPED_UNICODE, int $depth = 512): string
- {
- if ($data instanceof Jsonable) {
- return (string) $data;
- }
- if ($data instanceof Arrayable) {
- $data = $data->toArray();
- }
- try {
- $json = json_encode($data, $flags | JSON_THROW_ON_ERROR, $depth);
- } catch (Throwable $exception) {
- throw new InvalidArgumentException($exception->getMessage(), (int) $exception->getCode(), $exception);
- }
- return $json;
- }
- /**
- * @throws InvalidArgumentException
- */
- public static function decode(string $json, bool $assoc = true, int $depth = 512, int $flags = 0): mixed
- {
- try {
- $decode = json_decode($json, $assoc, $depth, $flags | JSON_THROW_ON_ERROR);
- } catch (Throwable $exception) {
- throw new InvalidArgumentException($exception->getMessage(), (int) $exception->getCode(), $exception);
- }
- return $decode;
- }
- }
|