我有下一个yaml,如果我在在线yaml网站上验证它,它说它是有效的:
- {"foo": "1", "bar": "2"}
然后,我编写一个代码来解析该值,并从这个yaml中分析如下:1
2
测试.go:
package main
import "gopkg.in/yaml.v2"
import "fmt"
type Config struct {
Foo string
Bar string
}
type Configs struct {
Cfgs []Config `foobar`
}
func main() {
//var data = `
// foobar:
// - foo: 1
// bar: 2
//`
var data = `
- foo: 1
bar: 2
`
source := []byte("foobar:" + data)
var configs Configs
err := yaml.Unmarshal(source, &configs)
if err != nil {
fmt.Println("error: %v", err)
}
fmt.Printf("--- configs:\n%v\n\n", configs)
fmt.Println(configs.Cfgs[0].Foo)
fmt.Println(configs.Cfgs[0].Bar)
}
它的工作原理如下:
shubuntu1@shubuntu1:~/20210810$ go run test.go
--- configs:
{[{1 2}]}
1
2
怎么了?
你可以看到我在这里做了一个解决方法,因为接下来在原始的yaml之前添加特殊键,然后我可以用来取消封送:foobartype Configs struct
从
- foo: 1
bar: 2
自
foobar:
- foo: 1
bar: 2
因此,如果我不使用解决方法来添加前缀,我怎么能直接解析?foobar:- {"foo": 1, "bar": 2}
天涯尽头无女友
GCT1015
相关分类