Javascript 解析json数组的流
在前端,我使用“xhr”(onprogress)接收“分块”数据(json数组) 当块到达时,它们之间有一个延迟-一切都很好,这种情况很容易处理-我只记得响应长度和偏移量 当一个以上的“分块”响应同时到达,导致最终响应不可解析时,就会出现问题,因为它是不正确的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}]}] 问题:有办法解析它吗? 我试着
[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]...
}
这个解决方案非常有效!简单高效。非常感谢你!