JSON.parse无法解析.json文件

时间:2018-08-28 18:39:54

标签: json node.js

我有以下代码:

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。那是什么?

1 个答案:

答案 0 :(得分:1)

您可以在解析之前尝试将其替换

var filter = new RegExp("\uFEFF");
data = data.replace(filter, '');
obj = JSON.parse(data);

或者您可以尝试使用“无BOM”选项保存json文件。