gpt4 book ai didi

javascript - 解析json数组流

转载 作者:行者123 更新时间:2023-11-30 16:25:02 25 4
gpt4 key购买 nike

在前端,我使用“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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com