atiksoftware / gson-php
PHP Gson: 将 PHP 对象转换为 JSON 并从 JSON 转换为 PHP 对象
3.0
2024-01-20 18:47 UTC
Requires
- php: >=7.1
- phpdocumentor/reflection-docblock: ^3.2.3|^4.0.1|^5
- psr/simple-cache: ^3.0.0
- symfony/cache: ^3.3|^4.0|^5.0|^6.0
- tebru/doctrine-annotation-reader: ^0.3.7
- tebru/php-type: ^0.1.7
Requires (Dev)
- phpunit/phpunit: ^7.0|^8.0
This package is auto-updated.
Last update: 2024-09-20 20:36:37 UTC
README
此库是使用 PHP 编写的 google/gson 的移植版本。其目的是轻松处理 PHP 对象和 JSON 之间的转换。它共享一些 google/gson 的目标,例如
- 使用
toJson
和fromJson
方法提供的简单接口 - 启用第三方类的序列化和反序列化
- 允许 PHP 对象和 JSON 之间的模式差异
此外
- 利用 PHP 7 原始类型提示来智能地处理属性类型
- 限制需要使用的注解数量
- 允许根据运行时信息进行序列化决策
概述
以下是一些简单的用例,以了解库的工作方式
如果您有一个要转换为 JSON 的 PHP 对象
// $object obtained elsewhere $gson = Gson::builder()->build(); $json = $gson->toJson($object);
这个操作是使用提供的 GsonBuilder
设置合理的默认值来配置 Gson
对象。调用 Gson::toJson
并传递一个对象将返回一个 JSON 字符串。
如果您需要,可以强制 Gson 用于序列化的类型
// $object obtained elsewhere $gson = Gson::builder()->build(); $json = $gson->toJson($object, MyCustomClass::class);
反之亦然,非常类似
// $json obtained elsewhere $gson = Gson::builder()->build(); $fooObject = $gson->fromJson($json, Foo::class);
现在我们调用 Gson::fromJson
并将 JSON 作为字符串传递,以及我们想要映射的对象类型。在这个例子中,我们将获得一个实例化的 Foo
对象。
Gson 有一个“规范化”形式的概念。这仅仅意味着使用 json_decode
解码的数据,或者可以传递给 json_encode
的数据。
// $object obtained elsewhere $gson = Gson::builder()->build(); $jsonArray = $gson->toNormalized($object); $object = $gson->fromNormalized($jsonArray, Foo::class);
文档
安装
此库需要 PHP 7.1
composer require tebru/gson-php
确保在您的初始脚本之一中设置注解加载器。
\Doctrine\Common\Annotations\AnnotationRegistry::registerLoader('class_exists');
许可
本项目采用 MIT 许可证。请参阅 LICENSE
文件以获取更多信息。