Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/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
Hash yaml中是否有用于合并键的说明符?_Hash_Merge_Key_Yaml - Fatal编程技术网

Hash yaml中是否有用于合并键的说明符?

Hash yaml中是否有用于合并键的说明符?,hash,merge,key,yaml,Hash,Merge,Key,Yaml,也就是说,有没有办法改变这个例子: myhash: - name: name1 value: value1 myhash: - name: name2 value: value2 进入: 当我注意到默认情况下YAML将其转换为: myhash: - name: name2 value: value2 在YAML 1.2规范中,“映射-将唯一键无序关联到值”(emphasis mine)。您的键不是唯一的,因此发生的情况取决于库实现(抛出错误,忽略其中一个键

也就是说,有没有办法改变这个例子:

myhash:
  - name: name1
    value: value1
myhash:
  - name: name2
    value: value2
进入:

当我注意到默认情况下YAML将其转换为:

myhash:
  - name: name2
    value: value2

在YAML 1.2规范中,“映射-将唯一键无序关联到值”(emphasis mine)。您的键不是唯一的,因此发生的情况取决于库实现(抛出错误,忽略其中一个键)

您的解析器所做的显然是丢弃第一个键/值对。您想要做的事情不能通过使用YAML解析器加载第一个示例来完成。当然,您可以编写一个实用程序来拆分未使用YAML解析器的文本

请注意,在YAML 1.1中:

在同一映射节点中出现两个相等的关键点是错误的。在这种情况下,YAML处理器可能会继续,忽略第二个key:value对并发出相应的警告


例如,这不是YAML 1.1解析器PyYAML的工作方式:它不会忽略第二个(或以下)键的值,也不会发出警告。

Ok,因此没有YAML规范可以满足我的要求。谢谢你的回答!注意:不确定@Anthon为什么没有提到这一点,但这也可以通过锚和别名来处理:请参见:您链接的两个问题都有有效的YAML,因此它们不适用于OPs主要问题。AFAIK再多的插入锚和/或别名也不会使无效YAML转换为有效YAML,但我很高兴被证明是错误的(例如,如果我没有使用过支持这一点的非标准解析器)。如果您的观察结果有效,请在此处提供答案。如果你不能,你可能应该删除你的评论。@Anthon问候Anthon。只是想澄清一下,这里或上面没有说明你的答案是错误的。如果我们假设用户坚持使用“无效”YAML,那么您的答案确实是正确和完整的,不需要说明任何其他内容。然而,一些SO读者可能会错误地认为这里没有办法纠正主要问题,并假设“没有任何YAML规范可以实现我想要的”。假设读者不坚持使用非唯一键,那么还有其他选择。这些其他选择值得明确包含,因此这些链接。谢谢
myhash:
  - name: name2
    value: value2