我正在尝试解析此 yaml,但我想获取values
条目run
(test1 或 test2)但没有成功,这是我的工作示例。
我有点迷失了 map inside map :( ,这是给定的 yaml,我无法更改...
知道我怎么能得到这些值
package main
import (
"fmt"
"log"
"gopkg.in/yaml.v2"
)
var runContent = []byte(`
version: "3.2"
run-parameters:
before:
run-parameters:
run: test1
after:
run-parameters:
run: test2
`)
type FTD struct {
Version string `yaml:"version,omitempty"`
BuildParams *RunParams `yaml:"run-parameters,omitempty"`
}
type RunParams struct {
BeforeExec map[string]interface{} `yaml:"before,omitempty"`
AfterExec map[string]interface{} `yaml:"after,omitempty"`
}
func main() {
runners := &FTD{}
// parse mta yaml
err := yaml.Unmarshal(runContent, runners)
if err != nil {
log.Fatalf("Error : %v", err)
}
for k, v := range runners.BuildParams.BeforeExec {
fmt.Println(k, v.(interface{}))
}
}
这是工作示例 https://play.golang.org/p/qTqUJy3md0c
我也试过
这是工作
run := runners.BuildParams.BeforeExec["run-parameters"].(map[interface{}]interface{})["run"] fmt.Println("run: ", run)
我试过的是这个有效但如果run
值为空或根本没有条目会发生什么,这将导致转储 我如何克服这个问题?
白猪掌柜的
相关分类