Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
YAML锚点作为URL字符串中的占位符_Yaml_Snakeyaml_Property Placeholder - Fatal编程技术网

YAML锚点作为URL字符串中的占位符

YAML锚点作为URL字符串中的占位符,yaml,snakeyaml,property-placeholder,Yaml,Snakeyaml,Property Placeholder,尝试以添加方式使用锚, 下面的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: *UPD

尝试以添加方式使用锚, 下面的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:&主持人1“你好” a2:&主播2“月亮” 物业:*主播1“-”*主播2

属性应产生“hello moon”
有可能吗?还尝试使用${}代替锚点

这在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标记(在本例中是类似胡子的标记)作为占位符。加载后需要对数据进行后处理,以便用适当的内容替换占位符。

这在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标记(在本例中是类似胡子的标记)作为占位符。加载后需要对数据进行后处理,以便用适当的内容替换占位符