【发布时间】:2021-03-12 03:22:15
【问题描述】:
示例 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.v2 解组:
package main
import (
"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)
}
但它给出了一个空的结果:
[{ []} { []}]
【问题讨论】:
-
来自docs“结构字段仅在导出时才解组(首字母大写)”。所以开始导出你的变量;例如
Category string.
标签: go yaml unmarshalling