我在一个文件夹中有多个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 );
});
});
}