本文介绍了带有可选布尔值的YAML未命名字符串列表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想定义默认情况下定义字符串列表的YAML.我不希望此字符串列表成为命名属性.我也想有一个可选的布尔参数.如
I want to define YAML that defines a list of strings by default. I don't want this list of strings to be a named attribute. I also want to have an optional boolean parameter. As in
package main
import (
"fmt"
"log"
yaml "gopkg.in/yaml.v2"
)
type ThingAndGroups struct {
Groups []string
boolval boolean
}
var someStr = `
thing1:
- g1
- g2
boolval:
y
thing2:
- g1
- g2
`
func main() {
t := make(map[string]ThingAndGroups)
err := yaml.Unmarshal([]byte(someStr), &t)
if err != nil {
log.Fatalf("error: %v", err)
}
fmt.Printf("--- t:\n%v\n\n", t)
}
然后会返回
有可能吗?
我不想将YAML定义为
I DO NOT want to define the YAML as
var someStr = `
thing1:
groups:
- g1
- g2
boolval:
y`
如果YAML没有boolval,我可以做
And if the YAML didn't have boolval I could just do
func main() {
// NOTE THIS IS A MAP
t := make(map[string][]string)
err := yaml.Unmarshal([]byte(someStr), &t)
if err != nil {
log.Fatalf("error: %v", err)
}
fmt.Printf("--- t:\n%v\n\n", t)
}
推荐答案
问题
- 不使用映射键来定义YAML序列.
- 将之前"更改为之后"
var someStr = `
thing1:
- g1
- g2
boolval:
y
thing2:
- g1
- g2
`
之后
var someStr = `
thing1:
- g1
- g2
- boolval: y
thing2:
- g1
- g2
`
陷阱
- 这种方法不理想,因为它使用YAML序列存储两种不同类型的数据(组和布尔值).
- 另一个答案(后来被删除)建议使用组键,这是一个很好的建议.
这篇关于带有可选布尔值的YAML未命名字符串列表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!