wizaplace / json-decoder
此包已弃用,不再维护。未建议替换包。
当json_decode()无法解码JSON时抛出异常,并验证解码数据。
1.0.1
2019-03-26 13:24 UTC
Requires
- php: ^7.1.3
- ext-json: *
- symfony/options-resolver: ^3.0||^4.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.14
- phpstan/phpstan: ^0.11.2
- phpunit/phpunit: ^8.0
This package is auto-updated.
Last update: 2021-10-26 18:58:43 UTC
README
Json解码组件
如何解码JSON
不要使用json_decode()
,在PHP 7.3之前,解码失败时必须手动抛出异常。
创建JsonDecoder
您应该为需要解码的每个JSON创建一个类,该类继承自Wizacha\Json\Decoder\AbstractJsonDecoder
。
您的类应该配置AbstractJsonDecoder
class FooJsonDecoder extends AbstractJsonDecoder { public function __construct() { $this // throw a Wizacha\Json\Exception\JsonDecodeNullException exception if json_decode() return null ->setAllowNull(true) // transform objects into associative arrays, 2nd parameter of json_decode() ->setAssociative(false) // depth, 3nd parameter of json_decode() ->setDepth(512) // transform bigint as string ->setBigIntAsString(false) // transform objects as arrays, useless if setAssociative(true) ->setObjectAsArray(false); } protected function configureDecodedJson(OptionsResolver $optionsResolver): parent { // if json_decode() return an array, configure expected keys // @see https://symfony.ac.cn/doc/current/components/options_resolver.html $optionsResolver ->setRequired('myKey') ->setAllowedTypes('myKey', 'string'); return $this; } }
使用您的JsonDecoder解码JSON
如果您的JsonDecoder不需要依赖项,您可以手动实例化它
$decodedJson = (new FooJsonDecoder())->decode($json);
如果它需要依赖项,将其注册为Symfony服务并使用它
$decodedJson = container()->get('json_decoder.foo')->decode($json);