php 中的增量 JSON 解析

2022-08-30 23:41:39

在php程序中,我想以增量方式解析JSON。例如,给定部分 JSON

[1, 2, {"id": 3},

我想在流式传输其余的JSON输入之前获取1,2和字典。php的json_decode只是返回,似乎没有办法获得错误的位置。NULL


答案 1

更新

我写了一个小类,可以逐个字符地执行JSON输入解析。https://github.com/janeklb/JSONCharInputReader

刚从压机上下来,所以可能有一些错误。如果您决定尝试一下,请告诉我!

--

您能否(在跟踪“{”、“[”、“]”、“}”范围的同时)将流分解到不属于字符串值的每个逗号上?然后使用json_decode()处理每个令牌?

如果 json 流没有很多大型对象,则此解决方案效果最佳(因为它们只有在完整到达后才会被解析)。

编辑:如果它确实有大型对象,则可以修改此策略以使其看起来“更深”。但这里的复杂性会飙升。


答案 2

我已经编写了一个类似SAX的JSON流式解析器,应该可以做到这一点。让我知道它是否有效!


推荐