![]() |
1
15
我已经编写了一个流式JSON pull解析器 pcrov/JsonReader 对于使用基于 XMLReader .
它与基于事件的解析器有着显著的不同,它不是设置回调并让解析器执行它的任务,而是调用解析器上的方法来根据需要移动或检索数据。找到所需的位并要停止解析?然后停止解析(并调用
(有关基于pull和基于事件的解析器的较长概述,请参见 XML reader models: SAX versus XML pull parser 例1:从JSON中将每个对象作为一个整体读取。
输出:
对象作为stringly键控数组返回,部分原因是由于边缘情况,有效的JSON将生成PHP对象中不允许的属性名。解决这些冲突是不值得的,因为一个缺乏活力的stdClass对象无论如何都不会给一个简单的数组带来任何价值。 例2:分别读取每个命名元素。
输出:
例3:
输出:
如何最好地阅读JSON取决于它的结构和您想用它做什么。这些例子应该给你一个开始的地方。 |
![]() |
2
14
我决定开发一个基于事件的解析器。它还没有完全完成,当我推出一个令人满意的版本时,它将编辑一个链接到我的工作的问题。 编辑: 我终于想出了一个令我满意的解析器版本。GitHub上提供: https://github.com/kuma-giyomu/JSONParser 可能还有改进的余地,欢迎反馈。 |
![]() |
3
2
|
|
4
2
这是一个简单的流式解析器,用于处理大型JSON文档。使用它来解析非常大的JSON文档,以避免将整个内容加载到内存中,这就是几乎所有其他PHP JSON解析器的工作原理。 |
![]() |
5
2
最近我制作了一个名为JSON Machine的库,它可以有效地解析不可预知的大JSON文件。使用方法很简单
例子:
|
![]() |
6
0
有 http://github.com/sfalvo/php-yajl/ 我不是自己用的。 |
![]() |
7
0
我知道JSON流解析器 https://github.com/salsify/jsonstreamingparser 已经被提到了。但最近,我又增加了一个新的监听器,试图让它更易于使用,我想我会(为了改变)把一些关于它的功能的信息放出来。。。
https://www.salsify.com/blog/engineering/json-streaming-parser-for-php
,但我在标准设置中遇到的问题是,必须始终编写侦听器来处理文件。这并不总是一个简单的任务,而且如果/当JSON发生更改时,还可能需要一定的维护。所以我写了
基本原则是允许您说出您感兴趣的元素(通过regex表达式),并给它一个回调,告诉它在找到数据时要做什么。在读取JSON时,它会跟踪到每个组件的路径——类似于目录结构。所以
一个例子是 source on github )...
只是几个解释。。。
这将选择数组中的每个元素,并一次传递一个元素,因为它使用的是捕获组,所以此信息将作为
有效地扫描任何称为
我发现的另一个有用的特性是,如果在一个大型JSON文件中,您只需要在顶部显示摘要详细信息,就可以获取这些位,然后停止。。。
当你对剩下的内容不感兴趣时,这样可以节省时间。
如果您发现任何有趣的特性(有时被称为bug),请让我知道或在github页面上报告一个问题。 |
![]() |
Karlo · PHP Sqlite PDO最新版本 5 月前 |
![]() |
Malte · 检查远程服务器上是否存在文件(使用PHP)[关闭] 5 月前 |
![]() |
Bard.Mus · 迁移后的数据库字符集环境 5 月前 |