解码/读取复杂文本文件的json部分

时间:2017-06-30 07:16:18

标签: javascript json node.js electron

我开始使用Electron开发桌面应用程序。此应用程序将解析一些文件,并将从这些文件中显示数据。这些文件包含复杂数据。

现在,我正在尝试从复杂的文本文件中获取json数据。此文本文件包含一些字符串和json对象。示例文件如下所示:

    ...strings that I'm not interested in...
    { 
        "partOneA":0,
        "partOneB":7,
        ....
    }
    ...randomly strings may stand between json sections...
    {
        "partTwoA":7,
        "partTwoB":4,
        "partTwoC":4,
        ...
    }
    {
        "differentPartA":3,
        "differentPartB":5,
        "differentPartC":6,
        ...
    }
    ...somemoretext....

问题在于,如何使用 javascript 从这个复杂的文件中获取json部分?应考虑解决方案的性能。

Additionaly ,请考虑json结构是这样嵌套的:

{ 
    "partOneA":0,
    "partOneB" :{
        "partOneBnode1":0,
        "partOneBnode2":7,
        }
}

使用正则表达式解析不适用于此问题。 现在,我正在尝试找到基于javascript的解决方案。

1 个答案:

答案 0 :(得分:0)

只要您可以依赖{}作为开始和结束标记,就可以使用正则表达式:

var jsonRegex = new RegExp(/({(?:(.|\n)*?(?:[^\\])){0,1}?})/g);
var result = jsonRegex.exec(text);
var firstMatch= result[1];

结果你应该在随后的索引中得到第一篇随后的匹配。您可以阅读文档here on mdn

您可以在http://regexr.com/

等网站上使用正则表达式

注意

此方法不适用于嵌套JSON,因为您需要匹配相同数量的左括号和右括号(请参阅此answer)。