lendable/json-serializer

具有面向对象接口的 JSON 序列化/反序列化器

1.0.5 2024-05-02 22:50 UTC

README

Latest Stable Version License

该库为 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