【问题标题】:How can I parse objects with multiline strings in ES6?如何在 ES6 中解析具有多行字符串的对象?
【发布时间】:2016-05-04 13:34:01
【问题描述】:

我正在使用带有 ES6 的 Node.js v4.2.2。我读了一个文件,该文件代表一个包含多行字符串的对象。我的文件看起来像:

{"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 标准的一部分。

【问题讨论】:

  • 那个字符串是从哪里来的?
  • 用双引号替换反引号,你应该可以JSON.parse它。就目前而言,它不是有效的 JSON。
  • 这个字符串inside的反引号not是特殊的,它not是一个ES6多行/模板字符串。 developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
  • @GabrielFurstenheim:是否可以编辑此文件以使其中的行是有效的 JSON?
  • 也不需要对来自文件的字符串使用插值,仅在解析脚本并且当它具有实际换行符时才需要插值,\n 在普通字符串中仍然可以。

标签: javascript node.js ecmascript-6 multilinestring


【解决方案1】:

如果您不喜欢 eval 表达式,您可以随时向它抛出 ES6 解析器(如 esprima),以便您可以手动安全地评估您感兴趣的部分。

但正确的方法是首先不要使用带有多行模板字符串的对象文字,而是将数据存储为 JSON。

【讨论】:

  • 仅供参考:{"a":"b\n      c"}(啊,来吧,Stackoverflow 去掉了空格,所以我用不间断的空格替换了它们)
猜你喜欢
  • 2023-03-07
  • 1970-01-01
  • 2018-09-24
  • 2020-02-06
  • 2023-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多