【发布时间】:2017-01-26 00:47:39
【问题描述】:
我想动态组合多个 javascript 文件,每个文件都表示为一个具有一些功能的对象:
// ./src/foo.js
{
"foo": function() {
console.log("foo");
}
}
// ./src/bar.js
{
"bar": function() {
console.log("bar");
}
}
// desired output
{
"foo": function() {
console.log("foo");
},
"bar": function() {
console.log("bar");
}
}
我想返回一个类似于 JSON 对象的文件。如果我结合严格的 JSON,函数看起来(非常粗略)如下:
var files = ['./src/foo.json', './src/bar.json'];
var final = {};
for(var i in files) {
var srcFile = files[i];
var json = JSON.parse(fs.readFileSync(srcFile, 'utf8'));
Object.assign(final, json);
}
console.log(JSON.stringify(final, null, 2));
但这似乎不起作用,因为我的文件包含函数和 cmets,在 JSON 表示中是不允许的。因此,我必须将文件存储为 .js 文件,这种方法不适用于将对象合并为单个对象。如何读入和合并包含函数的“JSON”文件?
所以我的问题归结为两部分:
- 什么替代
var json = JSON.parse(fs.readFileSync(srcFile, 'utf8'));将包含函数的javascript 对象读入var json变量? - 用什么替换
Object.assign({}, json)来合并功能对象?
【问题讨论】:
-
从技术上讲,您不能将函数放入 json 中。但是你可以在里面放一个字符串表示
标签: javascript json node.js