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 に答える