如何在JavaScript中获取字符串中的有效对象?

如何在JavaScript中获取字符串中的有效对象?,javascript,node.js,Javascript,Node.js,因此,目前,我通过TCP连接获取数据,我们可以通过以下方式判断字符串是否是有效的JSON对象: let body = ''; client.on('data', (chunk) => { body += chunk.toString(); try { let data = JSON.parse(body); // data is valid json } catch (e) {} }); 当这起作用时,我们能在一个块中获得所

因此,目前,我通过TCP连接获取数据,我们可以通过以下方式判断字符串是否是有效的JSON对象:

let body = '';
client.on('data', (chunk) => {
    body += chunk.toString();
    try {
        let data = JSON.parse(body);
        // data is valid json
    }
    catch (e) {}
});
当这起作用时,我们能在一个块中获得所有有效的对象吗?假设我们有

const chunk = // an incomplete object like { "list": [ { "id": 1 }, { "id": 

那么在示例中,我们如何获得字符串中的有效对象?我正在尝试获取
{“id”:1}
,因为它是字符串中唯一有效的对象。

您需要的是一个流式JSON解析器,例如:


正如您可能已经知道的,未完成的对象是无效的,并且有些随意。因此,您必须选择如何处理这些情况。也就是说,只有当您控制数据并决定如何处理这些情况时,您才能知道该怎么做。流式JSON解析器将发出对象,如传入的对象,这将帮助您避开任何不完整的对象。

简单而脆弱的解决方案是使用正则表达式匹配
{
}
之间的非括号字符,但我敢肯定,这不是你首先应该做的事情,这太棒了!现在,我可以发射对象,而无需等待完成全部数据。