2016-01-27 37 views
1

我使用Node.js v4.2.2和ES6。我讀取了一個代表包含多行字符串的對象的文件。我的文件看起來像:如何使用ES6中的多行字符串解析對象?

{"a":`b 
     c`}; 

我讀的文件轉換成字符串:

var fs = require ('fs'); 
var my_string = fs.readFileSync(path_to_my_file).toString(); 

最後,從該字符串我想獲得它代表的對象。我可以找到唯一的選擇是使用評估:

eval('my_object = ' + my_string); 

有沒有另一種方式?請注意,JSON.parse(my_string)不是一種選擇,因爲多行字符串不是JSON標準的一部分。

+1

從哪裏來的字符串? –

+1

用雙引號替換反引號,你應該能夠'JSON.parse'它。就目前而言,它不是有效的JSON。 –

+1

反引號*內*這個字符串*不*特殊,這是*不*一個ES6多行/模板字符串。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/template_strings –

回答

3

如果你不喜歡eval表達,你總是可以在它拋出一個ES6解析器(如esprima),這樣就可以手動和安全評估,你感興趣的部分。

但正確的方法不是首先將多行模板字符串用於對象字面值,而是將數據存儲爲JSON。

+2

其中fyi看起來像這樣:'{「a」:「b \ n c」}'(啊,來吧,Stackoverflow擺脫了空間,所以我用非不間斷空格替換它們) – towerofnix