remorhaz / php-json-data
JSON 数据访问器
v0.7.0
2024-02-17 12:52 UTC
Requires
- php: ~8.1.0 || ~8.2.0 || ~8.3.0
- ext-intl: *
- ext-json: *
Requires (Dev)
- bamarni/composer-bin-plugin: ^1.8
- phpunit/phpunit: ^10.1 || ^11
README
此库为处理 JSON 文档提供基础设施。
要求
节点值
ValueInterface 可以用来表示 JSON 文档或其部分。存在一系列派生接口,提供对类型值的访问
ScalarValueInterfaceArrayValueInterfaceObjectValueInterface
NodeValueInterface 包含有关值在文档中路径的信息,因此可以用来表示实际存在于某些 JSON 文档中的值。没有路径的计算值应实现基本的 ValueInterface。
节点值工厂
这种类型的对象旨在从某些源创建节点值。此库包括两种节点值工厂的实现
DecodedJson\NodeValueFactory从原始 PHP 值(由json_decode()函数产生或手动创建)创建节点值。EncodedJson\NodeValueFactory直接从编码的 JSON 字符串创建节点值。
示例
<?php use Remorhaz\JSON\Data\Value\DecodedJson; use Remorhaz\JSON\Data\Value\EncodedJson; // Both values represent same JSON document: $value1 = EncodedJson\NodeValueFactory::create()->createValue('{"a":"b"}'); $value2 = DecodedJson\NodeValueFactory::create()->createValue((object) ['a' => 'b']);
事件流
JSON 文档可以表示为事件流。这些事件实现了 EventInterface 的派生类。这些事件可以由任何自定义 JSON 解析器发出,但此库还实现了标准的 ValueWalker 对象,该对象可以将任何 NodeValueInterface 转换为事件流。
值遍历器还可以使用 变异 来改变事件。没有标准变异,您必须自己实现 MutationInterface。
您还可以使用 EventDecoder 对象将事件流转换回 NodeValueInterface。
值导出器
库包含一系列 ValueExporterInterface 的实现,允许将 ValueInterface 导出为其他表示形式
ValueEncoder将值转换为 JSON 编码的字符串。ValueDecoder将值转换为原始 PHP 值。
比较器
库包含一系列 ComparatorInterface 的实现,提供了一种简单的方法来比较/排序 JSON 文档
EqualValueComparator检查 JSON 文档是否相等。请注意,具有相同属性但顺序不同的对象被认为是相等的。GreaterValueComparator比较数字和字符串。ContainsValueComparator检查 JSON 文档是否相等或包含。包含的对象允许在任何递归级别具有额外的属性。
许可证
此库根据 MIT 许可证许可。有关更多信息,请参阅 LICENSE。