使用node.js读取json文件时出现错误

时间:2020-10-13 11:04:55

标签: node.js json fs

使用Node.js读取json文件时出现以下错误。我在下面解释我的代码。

SyntaxError: Unexpected token # in JSON at position 0
    at JSON.parse (<anonymous>)

我的json文件如下。

test.json:

#PATH:/test/
#DEVICES:div1
#TYPE:p1
{
  name:'Raj',
  address: {
     city:'bbsr'
  }
}

此json文件包含一些#包含的字符串。在这里,我需要从该文件中删除那些#包含的字符串。我在下面解释我的代码。

fs.readdirSync(`${process.env['root_dir']}/uploads/${fileNameSplit[0]}`).forEach(f => {
        console.log('files', f);
        let rawdata = fs.readFileSync(`${process.env['root_dir']}/uploads/${fileNameSplit[0]}/${f}`);
         let parseData = JSON.parse(rawdata);
         console.log(parseData);
}); 

在这里,我尝试先阅读代码,但收到上述错误。我需要从json文件中删除包含#的行,然后读取所有数据,并将删除的行转换为const obj ={PATH:'/test/',DEVICES:'div1',TYPE:p1}之类的对象。在这里,我正在使用node.js fs模块来实现这一目标。

1 个答案:

答案 0 :(得分:0)

正如您所说,您需要从JSON文件中删除那些#行。您需要自己编写代码。为此,请通过为readFileSync提供一个字符集,将文件读取为字符串而不是Buffer。

const text = fs.readFileSync(path, 'utf8');
console.log(text);
const arr = raw.split("\n");
const noComments = arr.filter(x => x[0] !== "#"));
const filtered = noComments.join("\n");
const data = JSON.parse(filtered);
console.log(data);