示例 yaml 文件:final-result.yml- category: 1 rules: - name: a results: - asset: b advice: c- category: 2 rules: - name: d results: - asset: e advice: f我嘗試打包以取消元帥:gopkg.in/yaml.v2package mainimport ( "io/ioutil" "log" "gopkg.in/yaml.v2")type FinalResult struct { category string `yaml:"category"` rules []RulesItem `yaml:"rules,flow"`}type RulesItem struct { name string `yaml:"name"` results []ResultsItem `yaml:"results,flow"`}type ResultsItem struct { asset string `yaml:"asset"` advice string `yaml:"advice"`}func main() { var result []FinalResult content, err := ioutil.ReadFile("final-result.yml") if err != nil { log.Fatal(err.Error()) return } err = yaml.Unmarshal(content, &result) if err != nil { log.Fatal("Failed to parse file ", err) } log.Println(result)}但它給出了一個空的結果:[{ []} { []}]
1 回答

人到中年有點甜
TA貢獻1895條經驗 獲得超7個贊
根據文檔,您應該公開結構字段,以便 unmarshal 正確填充數據:
僅當導出結構字段時,結構字段才會取消編組(首字母為大寫)
更改類型定義后,您的代碼將按預期方式工作,如下所示:
type FinalResult struct {
Category string `yaml:"category"`
Rules []RulesItem `yaml:"rules,flow"`
}
type RulesItem struct {
Name string `yaml:"name"`
Results []ResultsItem `yaml:"results,flow"`
}
type ResultsItem struct {
Asset string `yaml:"asset"`
Advice string `yaml:"advice"`
}
- 1 回答
- 0 關注
- 106 瀏覽
添加回答
舉報
0/150
提交
取消