rcs_us / php-json
PHP原生JSON编码/解码包装器,提供针对JSON错误的特定异常和详细信息。
1.0.2
2022-01-20 20:20 UTC
Requires
- php: ^5.2 || ^7.0 || ^8.0
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 }
要捕获的可能异常
- \RCS\JsonException ( extends \Exception )
- \RCS\JsonDecodeException ( extends \RCS\JsonException )
- \RCS\JsonDecodeErrorDepthException ( extends \RCS\JsonDecodeException )
- \RCS\JsonDecodeErrorStateMismatchException ( extends \RCS\JsonDecodeException )
- \RCS\JsonDecodeErrorCtrlCharException ( extends \RCS\JsonDecodeException )
- \RCS\JsonDecodeErrorSyntaxException ( extends \RCS\JsonDecodeException )
- \RCS\JsonDecodeErrorUtf8Exception ( extends \RCS\JsonDecodeException )
- \RCS\JsonDecodeErrorUnknownException ( extends \RCS\JsonDecodeException )
- \RCS\JsonEncodeException ( extends \RCS\JsonException )
- \RCS\JsonEncodeErrorDepthException ( extends \RCS\JsonEncodeException )
- \RCS\JsonEncodeErrorStateMismatchException ( extends \RCS\JsonEncodeException )
- \RCS\JsonEncodeErrorCtrlCharException ( extends \RCS\JsonEncodeException )
- \RCS\JsonEncodeErrorSyntaxException ( extends \RCS\JsonEncodeException )
- \RCS\JsonEncodeErrorUtf8Exception ( extends \RCS\JsonEncodeException )
- \RCS\JsonEncodeErrorUnknownException ( extends \RCS\JsonEncodeException )