我有以下代码:
router.get('/:pageName', function (req, res, next) {
var pageName = req.params.pageName;
var obj;
fs.readFile('./data/' + pageName + '.json', function (err, data) {
if (err) throw err;
obj = JSON.parse(data);
console.log(obj.title);
//render page with the data
});
});
我在about.json
中有一个名为./data
的文件。
{ "type": "plain-text", "title": "About", "content": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Sapien eget mi proin sed libero enim sed faucibus turpis." }
当我在浏览器中访问该页面时,什么都没有发生,并且这出现在我的控制台中:
{ ^ SyntaxError: Unexpected token in JSON at position 0 at JSON.parse () at C:\Users\username\source\repos\MyWebsite\MyWebsite\routes\index.js:34:16 at FSReqWrap.readFileAfterClose [as oncomplete] (fs.js:511:3)
我不明白为什么会出现此错误,因为我用JSONLint检查了我的.json文件
**编辑:*
我还注意到,令牌和JSON中位置0之间有多余的空格,我将它们复制到了Unicode字符检查器中:apps.timwhitlock.info/unicode/inspect?s=%EF%BB%BF它是ZERO WIDTH NO-BREAK SPACE
。那是什么?
答案 0 :(得分:1)
您可以在解析之前尝试将其替换
var filter = new RegExp("\uFEFF");
data = data.replace(filter, '');
obj = JSON.parse(data);
或者您可以尝试使用“无BOM”选项保存json文件。