PHP JSON解析器 - 从任何来源以内存效率高的方式读取大的JSON
php  /  管理员 发布于 1年前   284
JSON Parser是一个零依赖的拉动式解析器,可以从任何源以内存效率高的方式读取大的JSON。
你可以从任何来源读取JSON,如字符串、URL等,并像这样遍历它:
// a source is anything that can provide a JSON, in this case an endpoint
$source = 'https://randomuser.me/api/1.4?seed=json-parser&results=5';
foreach (new JsonParser($source) as $key => $value) {
// instead of loading the whole JSON, we keep in memory only one key and value at a time
}
如果您不想使用foreach,该解析器还提供了一个遍历方法,如下所示:
JsonParser::parse($source)->traverse(function (mixed $value, string|int $key, JsonParser $parser) {
// lazily load one key and value at a time; we can also access the parser if needed
});
上述示例演示了使用URL处理JSON,但该软件包支持多种数据源。
在撰写本文时,readme列出了以下数据源:
字符串,例如{"foo": "bar"}。
可迭代数组,即数组或Traversable实例
文件路径,例如/path/to/large.json
资源,例如流
API端点URL,例如https://endpoint.json 或Psr\Http\Message\UriInterface 的任何实例
PSR-7请求,即Psr\Http\Message\RequestInterface 的任何实例
PSR-7消息,即Psr\Http\Message\MessageInterface 的任何实例
PSR-7流,即Psr\Http\Message\StreamInterface 的任意实例
Laravel HTTP客户端请求,即Illuminate\Http\Client\Request 的任意实例
Laravel HTTP客户端响应,即任何Illuminate\Http\Client\Response 实例
用户自定义源,即Cerbero/JsonParser/Sources/Source的任何实例
我想指出的是,该库的另一个惊人的功能是指针,
这对于从一个大型JSON数据集中只提取特定的子树非常有用:
// Select the first gender result
$json = JsonParser::parse($source)->pointer('/results/0/gender');
foreach ($json as $key => $value) {
// 1st and only iteration: $key === 'gender', $value === 'female'
}
// Get all gender results
$json = JsonParser::parse($source)->pointer('/results/-/gender');
// ...
这个软件包还有许多其他功能我还需要提及,您应该查看一下!
例如,它有一个进度API来跟踪解析进度(即完成百分比、处理字节数等)。
查看这个软件包,获取完整的安装说明,并在GitHub上查看源代码
https://github.com/cerbero90/json-parser
123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..博主 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..1111 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..路人 在
php中使用hyperf框架调用讯飞星火大模型实现国内版chatgpt功能示例中评论 教程很详细,如果加个前端chatgpt对话页面就完美了..Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号