lendable / json-serializer
具有面向对象接口的 JSON 序列化/反序列化器
1.0.5
2024-05-02 22:50 UTC
Requires
- php: >=8.2,<9
Requires (Dev)
- infection/infection: ^0.28.1
- php-cs-fixer/shim: ^3.54.0
- php-parallel-lint/php-parallel-lint: ^1.4.0
- phpstan/phpstan: ^1.10.67
- phpstan/phpstan-deprecation-rules: ^1.1.4
- phpstan/phpstan-phpunit: ^1.3.16
- phpstan/phpstan-strict-rules: ^1.5.5
- phpunit/phpunit: ^10.5.20
- rector/rector: ^1.0.4
This package is auto-updated.
Last update: 2024-09-23 09:44:22 UTC
README
该库为 PHP 中处理 JSON 序列化和反序列化提供了有意见的面向对象接口。
功能
- 在序列化和反序列化失败时抛出异常。
- 合理的默认序列化标志。
安装
composer require lendable/json-serializer
为什么?有意见?
这个库通过提供一个严格且有限的 API 来简化 Lendable 中最常用的 JSON 使用模式,而不是一个通用的解决方案。
类型安全
我们遵循将对象图转换为数据数组,然后再转换为 JSON 的模式,这个库适合这个流程中的“数据数组 <=> JSON”部分。因此,对于我们的用例,这些是错误条件。数据总是被反序列化为数值(数组根元素)或关联数组(对象根元素)。因此,这个库可能 不 适合您的用例。
错误处理
仍然使用来自 ext-json
的默认 json_encode()
和 json_decode()
全局函数,但以安全的方式委托给它们。这些函数的潜在错误报告可以是
- 返回值
false
- 除了json_decode('false')
也返回 false,并不是错误。 - 通过
json_last_error()
或json_last_error_msg()
获取代码或消息 - 需要每次检查。 - 通过 PHP 7.3 中的
JSON_THROW_ON_ERROR
选项抛出异常 - 需要选择加入此功能。
此库将在序列化和反序列化失败时始终抛出异常,从而简化调用逻辑。
API
序列化 Serializer::serialize(array $data): string
将数据数组序列化为 JSON 字符串。
在序列化失败时抛出 SerializationFailed
。
反序列化 Serializer::deserialize(string $json): array
将 JSON 字符串反序列化为 array
。
在反序列化失败时抛出 DeserializationFailed
。如果结果反序列化数据的类型不是 array
,则抛出 InvalidDeserializedData
。