rcs_us/php-json

PHP原生JSON编码/解码包装器,提供针对JSON错误的特定异常和详细信息。

1.0.2 2022-01-20 20:20 UTC

This package is not auto-updated.

Last update: 2024-09-27 09:11:27 UTC


README

PHP原生JSON编码/解码包装器,提供针对JSON错误的特定异常和详细信息。

安装

使用 composer 安装最新版本。

$ composer require rcs_us/php-json

为什么?

我们经常遇到这样的代码

// Decode JSON
$decoded_json = json_encode($json_to_encode);

// Act on decoded JSON
if ( $decoded_json->some_property == "some_value" ) {

}

这个问题在于没有对JSON 结构 进行验证。因此,如果您处理的是无效的JSON,则所有操作都不会按预期工作。

这个库包装了原生的json_encode/json_decode功能,并额外调用json_last_error()。如果返回JSON_ERROR_NONE(见 https://php.ac.cn/manual/en/function.json-last-error.php ),则返回值,否则抛出相应的异常。

提供了一些异常,允许在处理可能无效的JSON时具有无限灵活性。

要捕获任何类型的异常,请捕获 \RCS\JsonException。对于任何与编码相关的问题,请使用 \RCS\JsonEncodeException,对于任何与解码相关的问题,请使用 \RCS\JsonDecodeException。

如果您只想在解码时捕获语法错误,请使用 \RCS\JsonDecodeErrorSyntaxException。下面提供了所有可能的异常列表。简而言之,所有JSON错误代码都有自己的异常,包括编码和解码。

您可以将这些存储在PSR-7 Middleware中。

详细信息/使用方法

string \RCS\Json::Encode ( mixed $value [, int $options = 0 [, int $depth = 512 ]] )
mixed \RCS\Json::Decode ( string $json [, bool $assoc = FALSE [, int $depth = 512 [, int $options = 0 ]]] )

编码示例

try {
    $encoded_json = \RCS\Json::Encode($json_to_encode);
} catch ( \RCS\JsonException $e ) {
    // ... Do what you want with the exception
}

解码

try {
    $decoded_json = \RCS\Json::Decode($json_to_decode);
} catch ( \RCS\JsonException $e ) {
    // ... Do what you want with the exception
}

要捕获的可能异常

  1. \RCS\JsonException ( extends \Exception )
  2. \RCS\JsonDecodeException ( extends \RCS\JsonException )
  3. \RCS\JsonDecodeErrorDepthException ( extends \RCS\JsonDecodeException )
  4. \RCS\JsonDecodeErrorStateMismatchException ( extends \RCS\JsonDecodeException )
  5. \RCS\JsonDecodeErrorCtrlCharException ( extends \RCS\JsonDecodeException )
  6. \RCS\JsonDecodeErrorSyntaxException ( extends \RCS\JsonDecodeException )
  7. \RCS\JsonDecodeErrorUtf8Exception ( extends \RCS\JsonDecodeException )
  8. \RCS\JsonDecodeErrorUnknownException ( extends \RCS\JsonDecodeException )
  9. \RCS\JsonEncodeException ( extends \RCS\JsonException )
  10. \RCS\JsonEncodeErrorDepthException ( extends \RCS\JsonEncodeException )
  11. \RCS\JsonEncodeErrorStateMismatchException ( extends \RCS\JsonEncodeException )
  12. \RCS\JsonEncodeErrorCtrlCharException ( extends \RCS\JsonEncodeException )
  13. \RCS\JsonEncodeErrorSyntaxException ( extends \RCS\JsonEncodeException )
  14. \RCS\JsonEncodeErrorUtf8Exception ( extends \RCS\JsonEncodeException )
  15. \RCS\JsonEncodeErrorUnknownException ( extends \RCS\JsonEncodeException )