hom*_*boy 1 javascript jquery json websocket
我使用 JSON 将数据发送到 websocket。有时 websocket 将许多消息作为一个接收,而 event.data 看起来像:
{"message1":"message1"}{"message2":"message2"}
Run Code Online (Sandbox Code Playgroud)
所以我无法用 JSON.Parse 解析它。如何处理这个问题?
这是自动恢复 JSON 解析器的示例,您可以使用它来解析连接的 json:
function *multiJson(str) {
while (str) {
try {
yield JSON.parse(str);
str = '';
} catch(e) {
var m = String(e).match(/position\s+(\d+)/);
yield JSON.parse(str.slice(0, m[1]));
str = str.slice(m[1]);
}
}
}
//
let test = '{"message1":"message1"}{"message2":{"nested":"hi}{there"}}"third"[4,5,6]';
for (let x of multiJson(test))
console.log(x)
Run Code Online (Sandbox Code Playgroud)
基本上,如果 position 有语法错误n
,它会尝试解析它之前n
和之后的所有内容。
归档时间: |
|
查看次数: |
962 次 |
最近记录: |