问题:假设有一个json
对象如下:
{
table: [
{
name: 'js',
age: 20
}
]
}
现在以上对象在服务端被格式化stream流返回(一个请求,分为多个片段返回),并且每个片段的内容都是不确定的,前端接收到内容后,都需要用JSON.parse
解析代码,并渲染到界面上。
假设服务端返回的每个片段可能如下:
// 1
"{"
// 2
"table: ["
// 3
"{name: 'js',"
// 4
"age: 20"
// 5
"}"
// 6
"]"
// 7
"}"
从上面可以看出,服务端每个片段返回到可能是总的json中任意片段长度的字符串,前端需要每次都能解析出来,我的理解是每次都自动拼接对应的后续缺失的}
,]
,'
等。比如收到第一个片段时,自动拼接上}
,此时整体变成{}
就可以直接使用JSON.parse
解析而不会报错,到第二个片段时,应该拼接后变成{ table: [] }
,以此类推,如果某个片段返回了对应}
或者]
则需要移除前面手动拼接的}
和]
。
有没有类似的专门处理以上需求的算法,或者npm包呢。
试试这个叫做
clarinet
的库下面的文章是其中一个使用场景
使用clarinet(browser&node.js)解析不合法的json字符串