你需要使用 fs
模块进行一些操作。
异步版本
var fs = require('fs');
fs.readFile('/path/to/file.json', 'utf8', function (err, data) {
if (err) throw err; // we'll not consider error handling for now
var obj = JSON.parse(data);
});
同步版本
var fs = require('fs');
var json = JSON.parse(fs.readFileSync('/path/to/file.json', 'utf8'));
你想用require
导入?再考虑一下!
var obj = require('path/to/file.json');
但是,因为以下几点我并不推荐这种方式:
require
只会读取一次文件,后续调用需要同一个文件将返回缓存副本。如果你想读取一个不断更新的.json文件,这不是一个好主意。你可以使用 hack 技巧,但是在这一点上,使用fs更简单。如果你的文件没有.json扩展名,
require
不会将该文件的内容视为JSON。require
是同步的。如果你有一个非常大的JSON文件,它会阻塞事件循环。你真的需要使用JSON.parse
与fs.readFile
。
真的!请用 JSON.parse
。
错误处理/安全
如果您不确定传递给JSON.parse()
的JSON是否是有效的JSON,请确保在try/catch块中调用JSON.parse()
。用户提供的JSON字符串可能会使应用程序崩溃,甚至可能导致安全漏洞。如果解析外部提供的JSON,请做好错误处理。