关于javascript:如何在我的node.js应用程序中读取json文件?

How to read a json file in my node.js app?

我有一个简单的node.js服务,在这里我对JSonSchema中定义的模式执行一些JSON验证。服务内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
app.post('/*', function (req, res) {
        var isvalid = require('isvalid');
        var validJson=true;
        var schema = require('./schema.json')
        isvalid(req.body,schema
            , function(err, validObj) {
                if (!validObj) {
                    validJson = false;
                }
                handleRequest(validJson,res,err,req);
            });
})

尝试使用上面第4行中的direct require语句。这会产生一个错误:

1
2
SyntaxError: c:\heroku
odejs_paperwork\schema.json: Unexpected token t

这是我的schema.json:

1
2
3
4
5
6
7
8
9
10
11
12
13
{
  type: Object,
 "schema": {
   "totalRecords": {
      type: String
    },
   "skip": {
      type: Number
    },
   "take": {
      type: Number
    }
}


你可能忽略了。您可以使用require语句加载和解析它。

1
var jsonData = require('/path/to/yourfile.json');

但是,上面方法的输出被缓存,一旦您更新了JSON文件并再次加载了Require,它就会从缓存中加载内容。如果存储模式的JSON文件没有经常更改,那么这个方法可能很有用。

如果您每次都想从磁盘加载JSON文件,而不是从缓存加载。使用fs

1
2
3
4
5
6
7
8
9
10
var fs = require('fs');

fs.readFile(filepath, 'utf8', function (err, data) {
  if (err) {
    // handle error
    return;
  }

  jsonData = JSON.parse(data);
});