使用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
模块来实现这一目标。
答案 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);