lfe*_*445 79 yaml list data-structures
我想在YAML中合并数组,并通过ruby加载它们 -
some_stuff: &some_stuff
- a
- b
- c
combined_stuff:
<<: *some_stuff
- d
- e
- f
Run Code Online (Sandbox Code Playgroud)
我想将组合数组作为 [a,b,c,d,e,f]
我收到错误:在解析块映射时没有找到预期的键
如何在YAML中合并数组?
Tam*_*lyn 22
如果您只需要将一项合并到一个列表中,您可以这样做
fruit:
- &banana
name: banana
colour: yellow
food:
- *banana
- name: carrot
colour: orange
Run Code Online (Sandbox Code Playgroud)
这产生
fruit:
- name: banana
colour: yellow
food:
- name: banana
colour: yellow
- name: carrot
colour: orange
Run Code Online (Sandbox Code Playgroud)
dre*_*mac 21
本文假设以下背景:
lfender6445希望合并YAML文件中的两个或多个列表,并在解析时将这些合并列表显示为一个单个列表.
这可以简单地通过将YAML锚分配给映射来获得,其中期望的列表显示为映射的子元素.在下面的示例中,我们有三个映射(list_one, list_two, list_three)和三个锚点和别名,在适当的地方引用这些映射.
当YAML文件加载到程序中时,我们得到了我们想要的列表,但加载后可能需要稍加修改(参见下面的陷阱).
list_one: &id001
- a
- b
- c
list_two: &id002
- e
- f
- g
list_three: &id003
- h
- i
- j
list_combined:
- *id001
- *id002
- *id003
## list_combined
[
[
"a",
"b",
"c"
],
[
"e",
"f",
"g"
],
[
"h",
"i",
"j"
]
]
此方法允许使用YAML的别名和锚点功能创建合并列表.
虽然输出结果是嵌套的列表列表,但可以使用该flatten方法轻松转换.
flatten;; http://ruby-doc.org/core-2.2.2/Array.html#method-i-flattenflatten;; https://softwareengineering.stackexchange.com/a/254676/23884Ant*_*hon 16
这不起作用:
<<后跟键/值分隔符:和作为引用的值完全混合,然后继续使用相同缩进级别的列表这不正确YAML:
combine_stuff:
x: 1
- a
- b
Run Code Online (Sandbox Code Playgroud)
因此,您的示例语法甚至不能作为YAML扩展提议.
如果你想做这样的事情,尝试为s1你使用YAML标记指定的某些特殊类型创建值,以便该类型的实例化对象知道如何解释元素并将所有元素替换为s2.
Jor*_*tao 15
您可以按照以下步骤实现:
# note: no dash before commands
some_stuff: &some_stuff |-
a
b
c
combined_stuff:
- *some_stuff
- d
- e
- f
Run Code Online (Sandbox Code Playgroud)
我一直在使用它gitlab-ci.yml(回答有关问题的@ rink.attendant.6评论)。
| 归档时间: |
|
| 查看次数: |
29350 次 |
| 最近记录: |