【发布时间】:2020-08-04 20:34:07
【问题描述】:
我正在尝试使用 Go YAML v3 解组以下 YAML。
model:
name: mymodel
default-children:
- payment
pipeline:
accumulator_v1:
by-type:
type: static
value: false
result-type:
type: static
value: 3
item_v1:
amount:
type: schema-path
value: amount
start-date:
type: schema-path
value: start-date
在管道下是任意数量的有序项目。应该将其解组的结构如下所示:
type PipelineItemOption struct {
Type string
Value interface{}
}
type PipelineItem struct {
Options map[string]PipelineItemOption
}
type Model struct {
Name string
DefaultChildren []string `yaml:"default-children"`
Pipeline orderedmap[string]PipelineItem // "pseudo code"
}
这如何与 Golang YAML v3 一起使用?在 v2 中有 MapSlice,但在 v3 中没有了。
【问题讨论】:
-
为什么不使用
append将pipeline中的每个项目添加到Pipelines 的数组中? -
但是怎么样,真的吗?我可以首先解组到 yaml.Node,然后遍历子项以选择每个单独的属性并将其设置在模型上,然后手动遍历 yaml.Node 的管道,......这将是高度非通用的,我会要么需要对每个属性进行硬编码,要么使用反射——这只适用于可寻址字段。没有任何方法可以保留不涉及编写高度特定的解析器的顺序吗?