【问题标题】:Remove quota from yaml从 yaml 中删除配额
【发布时间】:2019-05-12 09:48:35
【问题描述】:

我是 js-yaml 来转换此代码

        let coor = `[ ${x}, ${y}, 0 ]`;

        rooms.push( {
            ...
            coordinates: coor,
            ...
        } );

我会写

  coordinates: [ 1, 2, 0 ]

但我现在得到的是带有配额的字符串:

"[ 7, 3, 0 ]"

这就是我写文件的方式

fs.writeFileSync( `${id}.yml`, yaml.safeDump( rooms ), 'utf8', err => {

我应该使用什么样的选项?

【问题讨论】:

    标签: javascript node.js yaml


    【解决方案1】:

    您正在将一个字符串转储到 YAML,如果写为纯标量(即不带引号)将被解释为 YAML 序列。为防止这种情况发生,您需要在字符串周围加上引号。

    换句话说:因为字符串的第一个字符 ([) 在 YAML 中具有特殊含义,所以需要引用标量。

    当你像你一样将一个字符串转储为一个字符串时,没有办法解决这个问题。您当然可以以流样式转储数组,然后您会得到不带引号的[ ... ],但是在转储字符串时,您将被阻止做错事。

    【讨论】:

    • 如果我这样做:让 coor = [ 5, 12, 0 ];然后我得到了- 5 - 12 - 0
    • 那是块样式,您需要按照我在回答中写的那样以流样式转储它们,以获得原始帖子中使用的样式。您可以将flowLevel 参数设置为safeDump (npm.taobao.org/package/js-yaml)。并不是说它在语义上当然不同。
    • 我搬到了 js-yaml 但有了 yaml.safeDump( rooms, { 'styles': { 'flowLevel': 1 } 我还有配额
    • 我不知道您是如何想到将其作为参数传递给styles,而不是传递给safeDump 本身(如文档所示)。
    • 因为文档提到了它,加上 safeDump 不做任何改变
    猜你喜欢
    • 2017-04-18
    • 2018-07-21
    • 2013-02-18
    • 2014-06-30
    • 2016-09-30
    • 2015-03-29
    • 1970-01-01
    • 1970-01-01
    • 2020-06-04
    相关资源
    最近更新 更多