Go中YAML反序列化结构体数组报错的求助(仅修改YAML)
Go YAML反序列化:对象切片类型的正确配置写法
模拟你的代码结构体定义
type F struct { G []G `yaml:"g"` I []I `yaml:"i"` } type G struct { Name string `yaml:"name"` Age int `yaml:"age"` } type I struct { ID string `yaml:"id"` Flag bool `yaml:"flag"` }
正确的YAML写法
多行序列格式(可读性高,推荐)
f: g: - name: "Alice" age: 30 - name: "Bob" age: 25 i: - id: "item-1" flag: true - id: "item-2" flag: false
内联序列格式(适合短列表场景)
f: g: [ {name: "Alice", age: 30}, {name: "Bob", age: 25} ] i: [ {id: "item-1", flag: true}, {id: "item-2", flag: false} ]
之前错误的原因解析
错误1:
cannot unmarshal !!seq into F
你大概率把f字段写成了序列(比如f: - g: ...),但F是结构体类型而非切片,YAML序列无法反序列到结构体中。错误2:
cannot unmarshal !!seq into G/cannot unmarshal !!seq into I
可能是你错误地将g/i的子字段写成了序列,或者层级混乱(比如把序列写在了g的子层级而非g字段本身),导致程序尝试把序列反序列到单个G/I对象中,而非切片类型。
内容的提问来源于stack exchange,提问作者Pranav N
相关产品推荐
相关产品推荐

