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 文档或其部分。存在一系列派生接口,提供对类型值的访问
ScalarValueInterface
ArrayValueInterface
ObjectValueInterface
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。