如何在 ES6 中解析带有多行字符串的对象?
How can I parse objects with multiline strings in ES6?
我正在使用 Node.js v4.2.2 和 ES6。我读取了一个代表包含多行字符串的对象的文件。我的文件看起来像:
{"a":`b
c`};
我把文件读成字符串:
var fs = require ('fs');
var my_string = fs.readFileSync(path_to_my_file).toString();
最后,我想从该字符串中获取它所代表的对象。我能找到的唯一选择是使用 eval:
eval('my_object = ' + my_string);
还有别的办法吗?请注意,JSON.parse(my_string)
不是一个选项,因为多行字符串不是 JSON 标准的一部分。
如果你不喜欢 eval
表达式,你总是可以在它上面抛出一个 ES6 解析器(比如 esprima),这样你就可以手动和安全地评估你的部分有兴趣。
但正确的方法是首先不要将对象文字与多行模板字符串一起使用,而是将数据存储为 JSON。
我正在使用 Node.js v4.2.2 和 ES6。我读取了一个代表包含多行字符串的对象的文件。我的文件看起来像:
{"a":`b
c`};
我把文件读成字符串:
var fs = require ('fs');
var my_string = fs.readFileSync(path_to_my_file).toString();
最后,我想从该字符串中获取它所代表的对象。我能找到的唯一选择是使用 eval:
eval('my_object = ' + my_string);
还有别的办法吗?请注意,JSON.parse(my_string)
不是一个选项,因为多行字符串不是 JSON 标准的一部分。
如果你不喜欢 eval
表达式,你总是可以在它上面抛出一个 ES6 解析器(比如 esprima),这样你就可以手动和安全地评估你的部分有兴趣。
但正确的方法是首先不要将对象文字与多行模板字符串一起使用,而是将数据存储为 JSON。