Javascript 解析json数组的流

Javascript 解析json数组的流,javascript,arrays,json,regex,stream,Javascript,Arrays,Json,Regex,Stream,在前端,我使用“xhr”(onprogress)接收“分块”数据(json数组) 当块到达时,它们之间有一个延迟-一切都很好,这种情况很容易处理-我只记得响应长度和偏移量 当一个以上的“分块”响应同时到达,导致最终响应不可解析时,就会出现问题,因为它是不正确的json 结构: [array 1][array 2] ... [array N] 示例:[{“response”:[{“itemId”:1}]}][{“response”:[{“itemId”:2}]}] 问题:有办法解析它吗? 我试着

在前端,我使用“xhr”(onprogress)接收“分块”数据(json数组)

当块到达时,它们之间有一个延迟-一切都很好,这种情况很容易处理-我只记得响应长度和偏移量

当一个以上的“分块”响应同时到达,导致最终响应不可解析时,就会出现问题,因为它是不正确的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
有什么方法可以用正则表达式来实现,或者我需要不同的方法来实现吗? 提前谢谢

假设“源”是块可用的地方,您可以:

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]...
}

这个解决方案非常有效!简单高效。非常感谢你!