是否可以在带有 symfony/yaml 的 yaml 中为键使用别名?
Is it possible to use alias for keys in yaml with symfony/yaml?
我一直在尝试使用 symfony/yaml(v4.4.0) 和 cakephp3 来读取以下 yaml 文件。
但是,我收到以下错误。
Reference "aaa" does not exist in "path to yml" at line xx (near "*aaa:").
Symfony\Component\Yaml\Exception\ParseException
我想稍后使用 'aaa' 作为密钥。
它不适用于“*aaa:”,适用于“1:”。
基本上,是否可以在 yaml 文件中为密钥使用别名?
这是 yaml 文件。
aaa: &aaa 1
bbb: &bbb 2
ccc: &ccc 3
*aaa: # <- this doesn't work and works with '1:'
- *bbb
- *ccc
对于符合一般规范的 YAML 解析器
需要在:
前加上space。
aaa: &aaa 1
bbb: &bbb 2
ccc: &ccc 3
*aaa :
- *bbb
- *ccc
YAML 1.2 允许 :
成为锚的一部分,因此,如果 :
写在别名旁边(因为它成为锚的一部分),则该行不会被解析为隐式键别名)。
这是 discussed on the YAML core mailing list。
对于 Symfony
Symfony 似乎将 *aaa:
解析为别名 *aaa
,将 :
作为值指示符。虽然这是违反规范的行为,但它不应该打扰我们,因为根据邮件列表,这更像是规范中的疏忽。但是,Symfony 无法在此处解析别名,您对此无能为力,只能为它提交问题。
我一直在尝试使用 symfony/yaml(v4.4.0) 和 cakephp3 来读取以下 yaml 文件。
但是,我收到以下错误。
Reference "aaa" does not exist in "path to yml" at line xx (near "*aaa:").
Symfony\Component\Yaml\Exception\ParseException
我想稍后使用 'aaa' 作为密钥。
它不适用于“*aaa:”,适用于“1:”。
基本上,是否可以在 yaml 文件中为密钥使用别名?
这是 yaml 文件。
aaa: &aaa 1
bbb: &bbb 2
ccc: &ccc 3
*aaa: # <- this doesn't work and works with '1:'
- *bbb
- *ccc
对于符合一般规范的 YAML 解析器
需要在:
前加上space。
aaa: &aaa 1
bbb: &bbb 2
ccc: &ccc 3
*aaa :
- *bbb
- *ccc
YAML 1.2 允许 :
成为锚的一部分,因此,如果 :
写在别名旁边(因为它成为锚的一部分),则该行不会被解析为隐式键别名)。
这是 discussed on the YAML core mailing list。
对于 Symfony
Symfony 似乎将 *aaa:
解析为别名 *aaa
,将 :
作为值指示符。虽然这是违反规范的行为,但它不应该打扰我们,因为根据邮件列表,这更像是规范中的疏忽。但是,Symfony 无法在此处解析别名,您对此无能为力,只能为它提交问题。