phi*_*hag 16 php streaming json
在php程序中,我想逐步解析JSON.例如,给定部分JSON
[1, 2, {"id": 3},
Run Code Online (Sandbox Code Playgroud)
我想在流式传输剩余的JSON输入之前得到1,2和字典.php json_decode刚刚返回NULL,似乎没有办法获得错误的位置.
更新
我写了一个小类,它通过char-by-char JSON输入解析... https://github.com/janeklb/JSONCharInputReader
新鲜的印刷机,所以它可能有一些错误..如果你决定试一试,让我知道!
-
你能(在跟踪'{','[',']','}'范围的同时)打破每个逗号的流,这些逗号不是字符串值的一部分吗?然后使用json_decode()处理每个令牌?
如果json流没有很多大对象(因为只有在它们完全到达时才会被解析),这个解决方案最有效.
编辑:如果它确实有大型对象,可以修改此策略以使其看起来更"深"但是这里的复杂性会上升.
有一个简单的解决方法,如果每个单独的元素都保证被完整接收,或者换句话说 - 你不能像这样只得到对象的一半:
{"a": 1,
Run Code Online (Sandbox Code Playgroud)
json_decode()将返回 NULL,因为您传递给它的字符串不是有效的 JSON 字符串。将结尾的逗号替换为结束括号,然后就可以了:
[1, 2, {"id": 3}]
Run Code Online (Sandbox Code Playgroud)
现在解码是没有问题的,等待稍后接收到流的其他部分。
| 归档时间: |
|
| 查看次数: |
3633 次 |
| 最近记录: |