正在分析json数组的流



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

当块到达时会有延迟——一切都很好,这种情况很容易处理——我只记得响应长度和偏移量。

当超过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

有什么方法可以使用正则表达式来实现这一点,或者我需要不同的方法吗?提前感谢!

假设"source"是块可用的地方,您可以:

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

相关内容

  • 没有找到相关文章

最新更新