如何解析json文件内容,包含$,{in values等字符

时间:2017-06-08 03:38:46

标签: javascript json node.js fs

我在一个文件夹中有多个json文件。

我需要做些什么?

我必须编写一个函数,遍历该文件夹中的所有文件,并返回一个JSON数组,其中filename为key,content为value。

[ {jsonFileName1:content1}, {jsonFileName2:content2}, {jsonFileName3:content3} ]

特殊情况

每个文件内容都包含一些特殊字符,例如$,{。

例如:

{
        "_id": "${obj2.result.id}",
        "someKey" : ${obj1.result.someValue}
}

我面临的问题

在解析文件内容时,它会抛出异常。

注意:我无法将${obj1.result.someValue}括在引号中。

代码:

function readFileAsync(){
    const pathUrl = pathToDir;
    readFileNamesInDir(pathUrl)
    .then((fileNames)=>{
        console.log(fileNames);
        const pTempArr = [];
        fileNames.forEach(function(filename) {
           pTempArr.push( readAndGetFilesContent(pathUrl, filename) );
        });

        return Promise.all( pTempArr );
    })
    .then((response)=>{
        console.log(response);
    })
    .catch((err)=>{
        console.log(err);
    });
}

function readFileNamesInDir(dirPath){
    return new Promise((resolve, reject)=>{
        fs.readdir(dirPath, function(err, filenames) {
            if (err) {
                reject(err);
                return;
            }
            resolve(filenames)
        });
    });
}


function readAndGetFilesContent(pathToFile, fileName){
    return new Promise((resolve, reject)=>{
        fs.readFile(pathToFile + fileName,'utf8', function(err, content) {
            if (err) {
                reject(err);
                return;
            }

            const tmp = {};
            tmp[fileName] =  content;

            resolve( tmp );
        });
    });
}

0 个答案:

没有答案