【问题标题】:YAML anchor as a placeholders in URL stringYAML 锚点作为 URL 字符串中的占位符
【发布时间】:2017-04-28 13:42:50
【问题描述】:

尝试以附加的方式使用锚点, 以下 YAML 代码不起作用,但可以解释我想要它做什么

  endpoint:
    data.updates.index.name: &UPDATES-INDEX-NAME "data-updates"
    meta.data.type.name: &DATA-TYPE-NAME "meta-data"
    last.run.type.name: &RUN-TYPE-NAME "lastrun"
    search.ctx: *UPDATES-INDEX-NAME "/" *DATA-TYPE-NAME "/_search"
    search.lastrun: *UPDATES-INDEX-NAME "/" *RUN-TYPE-NAME "/_search"
    update.lastrun: *UPDATES-INDEX-NAME "/" *RUN-TYPE-NAME "/"

a1: &anchor1 "你好" a2: &anchor2 "月亮" 属性:*anchor1 "-" *anchor2

属性应该产生“hello-moon” 有可能吗?也尝试使用 ${} 而不是锚

【问题讨论】:

    标签: yaml snakeyaml property-placeholder


    【解决方案1】:

    这在 YAML 中是不可能的。锚/别名功能旨在序列化循环数据结构,而不是用于重用表达式中的值。在 YAML 中,没有表达式(嗯,除了 YAML 1.1 的 !!merge 标签已过时,在这里对您没有帮助)。您需要在加载时或加载后对数据执行所有操作。

    一种可能的方法:

    endpoint:
      data.updates.index.name: "data-updates"
      meta.data.type.name: "meta-data"
      last.run.type.name: "lastrun"
      search.ctx: "{{data.updates.index.name}}/{{meta.data.type.name}}/_search"
      search.lastrun: "{{data.updates.index.name}}/{{last.run.type.name}}/_search"
      update.lastrun: "{{data.updates.index.name}}/{{last.run.type.name}}/"
    

    如您所见,我使用非 YAML 标记(在本例中为类似小胡子)作为占位符。您需要在加载后对数据进行后处理,以便将占位符替换为适当的内容。

    【讨论】:

      猜你喜欢
      • 2021-08-28
      • 2018-03-14
      • 2014-05-02
      • 1970-01-01
      • 1970-01-01
      • 2021-09-26
      • 1970-01-01
      • 2017-05-28
      • 1970-01-01
      相关资源
      最近更新 更多