0

我有一个文件,它的结构是这样的:

({
    foo: 'bar',
    bar: 'foo'
})

我正在尝试加载和读取文件,NodeJS以便我可以将其object作为变量;最好的方法是什么?请注意,我无法更改文件的结构。

4

2 回答 2

3

您可以将文件读入一个字符串和eval该字符串:

var fs = require('fs');
var s = fs.readFileSync('myfile.js', 'utf8');
var x = eval(s);

s如有必要,您可以在调用之前修改字符串eval

我必须同意mtsr的观点,即使用的解决方案JSON.parse更好(无论是在安全性方面还是在性能方面)。但是,由于对象文字周围有额外的括号,当前数据文件不代表 JSON 结构。

如果您确定对象文字{..}总是被一(..)对包围,您可以删除它们,然后尝试解析字符串:

m = s.match(/\(([\s\S]+)\)/);
x = JSON.parse(m[1]);

正则表达式的[\s\S]+部分匹配任何内容,包括换行符。\(and\)部分匹配周围的括号。

于 2013-02-22T11:27:56.653 回答
1

我会避免评估。尝试

JSON.parse()

反而。

于 2013-02-22T15:10:54.963 回答