在前端,我使用“xhr”(onprogress)接收“分块”数据(json 数组)
当 block 到达时它们之间有延迟 - 一切都很好,这种情况很容易处理 - 我只记得响应长度和偏移量。
当超过 1 个“分块”响应同时到达导致最终响应无法解析时,就会出现问题,因为它是不正确的 json。
结构:
[array 1][array 2] ... [array N]
示例:[{"response": [{"itemId": 1}]}][{"response": [{"itemId": 2}]}]
问题:有办法解析吗? 我尝试使用正则表达式 - 它工作正常,直到您在响应主体内有子数组为止。换句话说 - 上面提到的例子会失败。
它将匹配这个:
1) {"response": [{"itemId": 1}
2) {"response": [{"itemId": 2}
我正在寻找的输出(匹配项):
1) {"response": [{"itemId": 1}]}
2) {"response": [{"itemId": 2}]}
这是我现在使用的正则表达式。
\[(.*?)\]/gi
有什么方法可以使用正则表达式来做到这一点,或者我需要不同的方法吗? 提前致谢!
最佳答案
假设“源”是 block 可用的地方,您可以:
var source = '[{"response": [{"itemId": 1}]}][{"response": [{"itemId": 2}]}]';
var chunks = JSON.parse('[' + source.replace(/\]\[/g, '\],\[') + ']');
for (var i in chunks) {
// then work with chunks[i]...
}
关于javascript - 解析json数组流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34244168/