json-mapper / json-mapper
将 JSON 结构映射到 PHP 类
2.22.2
2024-05-14 09:24 UTC
Requires
- php: ^7.1 || ^8.0
- ext-json: *
- myclabs/php-enum: ^1.7
- nikic/php-parser: ^4.13 || ^5.0
- psr/log: ^1.1 || ^2.0 || ^3.0
- psr/simple-cache: ^1.0 || ^2.0 || ^3.0
- symfony/cache: ^4.4 || ^5.0 || ^6.0 || ^7.0
- symfony/polyfill-php73: ^1.18
Requires (Dev)
- guzzlehttp/guzzle: ^6.5 || ^7.0
- php-coveralls/php-coveralls: ^2.4
- phpstan/phpstan: ^0.12.14
- phpstan/phpstan-phpunit: ^0.12.17
- phpunit/phpunit: ^7.5 || ^8.5 || ^9.0
- squizlabs/php_codesniffer: ^3.5
- symfony/console: ^2.1 || ^3.0 || ^4.0 || ^5.0
- vimeo/psalm: ^4.10 || ^5.0
Suggests
- json-mapper/laravel-package: Use JsonMapper directly with Laravel
- json-mapper/symfony-bundle: Use JsonMapper directly with Symfony
- dev-develop
- 2.22.2
- 2.22.1
- 2.22.0
- 2.21.0
- 2.20.0
- 2.19.0
- 2.18.0
- 2.17.0
- 2.16.0
- 2.15.0
- 2.14.4
- 2.14.3
- 2.14.2
- 2.14.1
- 2.14.0
- 2.13.0
- 2.12.0
- 2.11.1
- 2.11.0
- 2.10.0
- 2.9.1
- 2.9.0
- 2.8.0
- 2.7.0
- 2.6.0
- 2.5.1
- 2.5.0
- 2.4.1
- 2.4.0
- 2.3.1
- 2.3.0
- 2.2.0
- 2.1.0
- 2.0.0
- 1.4.2
- 1.4.1
- 1.4.0
- 1.3.0
- 1.2.0
- 1.1.0
- 1.0.1
- 1.0.0
- 0.3.0
- 0.2.1
- 0.2.0
- 0.1.0
- 0.0.2
- 0.0.1
- dev-Issue-176
- dev-main
- dev-Introduce-psalm
- dev-MixedNamespace
- dev-AddPsalmAnnotations
- dev-shared-cache
- dev-Add-benchmarks
- dev-Strengthen-codebase-using-mutation-testing
- dev-psalm-middleware
This package is auto-updated.
Last update: 2024-08-25 14:37:50 UTC
README
JsonMapper 是一个 PHP 库,允许您将 JSON 响应映射到使用 doc 块注释或使用类型属性注解的 PHP 对象。更多信息请见项目网站:https://jsonmapper.net/
为什么使用 JsonMapper
不断将 JSON 响应映射到您的对象会变得繁琐且容易出错。更不用说还需要为这种映射编写测试。
JsonMapper 是基于最常见的用法构建的。为了允许那些默认不支持的情况,它可以通过使用中间件轻松扩展,因为其核心就是使用中间件设计的。
JsonMapper 支持以下功能
- 大小写转换
- 调试
- docBlock 注释
- 最终回调
- 命名空间解析
- PHP 7.4 类型属性
安装 JsonMapper
可以使用 Composer 容易地安装 JsonMapper
$ composer require json-mapper/json-mapper
上面的示例假设您的 $PATH
上有 composer
。
如何使用 JsonMapper
给定以下类定义
namespace JsonMapper\Tests\Implementation; class SimpleObject { /** @var string */ private $name; public function getName(): string { return $this->name; } public function setName(string $name): void { $this->name = $name; } }
结合以下 JsonMapper 代码作为您应用程序的一部分
$mapper = (new \JsonMapper\JsonMapperFactory())->default(); $object = new \JsonMapper\Tests\Implementation\SimpleObject(); $mapper->mapObject(json_decode('{ "name": "John Doe" }'), $object); var_dump($object);
上面的示例将输出
class JsonMapper\Tests\Implementation\SimpleObject#1 (1) {
private $name =>
string(8) "John Doe"
}
自定义 JsonMapper
使用 AbstractMiddleware
来编写自己的中间件,这使得扩展您项目所需的功能变得尽可能简单。
use JsonMapper; $mapper = (new JsonMapper\JsonMapperFactory())->bestFit(); $mapper->push(new class extends JsonMapper\Middleware\AbstractMiddleware { public function handle( \stdClass $json, JsonMapper\Wrapper\ObjectWrapper $object, JsonMapper\ValueObjects\PropertyMap $map, JsonMapper\JsonMapperInterface $mapper ): void { /* Custom logic here */ } });
贡献
有关如何为 JsonMapper 做贡献的信息,请参阅 CONTRIBUTING.md。
贡献者名单
感谢所有为 JsonMapper 做出贡献的人!您可以在 GitHub 上找到 JsonMapper 贡献者的详细列表。
赞助
此项目由 JetBrains 赞助,提供开源许可证,以继续免费构建 JsonMapper。
许可
MIT 许可证 (MIT)。更多信息请参阅 许可文件。