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



所以目前,我通过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解析器,比如这个: https://github.com/chrisdickinson/json-parse-stream

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

最新更新