【问题标题】:Stringify an object in YAML字符串化 YAML 中的对象
【发布时间】:2021-12-02 17:57:33
【问题描述】:

有没有办法在 YAML 中对对象进行字符串化?我正在寻找这样的东西:

YAML 输入:

environment: @stringify(
   foo: buz,
   bar: 42,
)

预期的 JSON 输出:

{"environment": "{\"foo\": \"buz\", \"bar\": 42}"}

可以当然这样做:

environment: '{
    "foo": "buz",
    "bar": 42
}'

但这有几个问题:

  1. 没有语法检查。 YAML 会愉快地编译,JSON 中的任何语法错误都会在“下游”发生。
  2. 不支持 YAML。我无法在内部插入对象(例如 <<: *myObj)。
  3. 额外的空格。文本中的换行符可能会导致问题,尤其是当文件以 CLRF 结尾编写时。
  4. 仅限严格 JSON。“额外”JSON 功能(如尾随逗号或 cmets)不会被删除,这是“下游”的额外工作。

注意:我将它用于docker-compose,所以如果您有针对docker-compose 的解决方案,那也可以。

【问题讨论】:

    标签: json docker-compose yaml


    【解决方案1】:

    Here 你可以看到整个新的 YAML v1.2.2 规范(2021 年 10 月 1 日发布)。 它确实指定了一个名为 JSON schema 的东西,但是,这不是您要查找的内容。

    一旦您使用 YAML 的字符串行为,它将被视为“普通”字符串,没有任何特定的格式 linting(除了所需的字符转义等)。

    没有原生的 YAML 或 docker-compose 方式来做你想做的事情。 由于您指定您不是在寻找任何脚本或第 3 方程序,因此答案是:

    不,这是不可能的。

    【讨论】:

      猜你喜欢
      • 2020-01-20
      • 2013-08-25
      • 2011-05-04
      • 2021-03-12
      • 1970-01-01
      • 2020-05-28
      • 2012-12-24
      • 2019-10-03
      • 1970-01-01
      相关资源
      最近更新 更多