代码之家  ›  专栏  ›  技术社区  ›  wobsoriano

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

  •  0
  • wobsoriano  · 技术社区  · 7 年前

    因此,目前,我通过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 } 因为它是字符串中唯一有效的对象。

    任何帮助都将不胜感激。

    1 回复  |  直到 7 年前
        1
  •  1
  •   Brad    7 年前

    您需要的是一个流式json解析器,例如: https://github.com/chrisdickinson/json-parse-stream

    您可能已经知道,未完成的对象是无效的,而且有些武断。所以,你必须选择如何处理这些情况。也就是说,只有在控制了数据并决定了如何处理这些情况之后,才能知道该怎么做。流式json解析器将发出对象,比如它们被传入,这将帮助您绕过任何不完整的对象。