softinvest / php-jsonpointer
JSON Pointer (http://tools.ietf.org/html/rfc6901) 的实现
v5.0.0
2022-05-07 10:44 UTC
Requires
- php: >=8.0
- ext-json: *
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.0
- phpunit/phpunit: 8.*
This package is auto-updated.
Last update: 2024-09-14 19:14:54 UTC
README
这是用 PHP 编写的 JSON Pointer 实现的示例,由 @janl 的 node.js 实现 触发,并且有点无聊。
通过 Composer 安装
$ composer require softinvest/php-jsonpointer
用法
现在您可以通过可用的 Composer autoload 文件 使用 JSON Pointer for PHP。
<?php require_once 'vendor/autoload.php'; use SoftInvest\Json\Pointer; use SoftInvest\Json\Pointer\InvalidJsonException; use SoftInvest\Json\Pointer\NonexistentValueReferencedException; $invalidJson = '{"Missing colon" null}'; try { $jsonPointer = new Pointer($invalidJson); } catch (InvalidJsonException $e) { $message = $e->getMessage(); // Cannot operate on invalid Json. Message: Parse error on line 1: ... } $json = '{"foo":1,"bar":{"baz":2},"qux":[3,4,5],"m~n":8,"a/b":0,"e^f":3}'; $jsonPointer = new Pointer($json); try { $all = $jsonPointer->get(""); // string('{"foo":1,"bar":{"baz":2},"qux":[3,4,5],"m~n":8,"a/b":0,"e^f":3}') $one = $jsonPointer->get("/foo"); // int(1) $two = $jsonPointer->get("/bar/baz"); // int(2) $three = $jsonPointer->get("/qux/0"); // int(3) $four = $jsonPointer->get("/qux/1"); // int(4) $five = $jsonPointer->get("/qux/-"); // int(5) $five = $jsonPointer->get("/qux/" . Pointer::LAST_ARRAY_ELEMENT_CHAR); // int(5) $zero = $jsonPointer->get("/a~1b"); // int(0) $eight = $jsonPointer->get("/m~0n"); // int(8) $three = $jsonPointer->get("/e^f"); // int(3) $nonexistent = $jsonPointer->get("/qux/7"); } catch (NonexistentValueReferencedException $e) { $message = $e->getMessage(); // Json Pointer '/qux/7' reference a nonexistent value }
运行测试
$ composer test
许可
此库采用 MIT 许可证授权。有关更多信息,请参阅 LICENSE。
变更日志
有关更多信息,请参阅 CHANGELOG。
贡献
有关更多信息,请参阅 CONTRIBUTING。