【发布时间】:2018-12-13 14:47:39
【问题描述】:
我想在yaml中生成以下内容:
- bar: hello
- bar: another
pint: guiness
- bar: second
pint: ""
在 Golang 中,但是以下面的示例为例,我得到以下输出:
- bar:
- bar: hello
- bar: another
pint: guiness
- bar:
- bar: second
pint: ""
YAML Golang 解析器似乎将结构的名称放在它生成的 YAML 中,例如 - bar:,然后是它下面的成员数组。我不希望这样,因为它会破坏其他东西。
package main
import (
"fmt"
"gopkg.in/yaml.v2"
"log"
)
type bar struct {
Bar string
}
type foo struct {
Bars []bar `yaml:"bar"`
Pint string `yaml:"pint"`
}
func main() {
f := make([]foo, 2)
f[0].Bars = make([]bar, 2)
f[0].Bars[0].Bar = "hello"
f[0].Bars[1].Bar = "another"
f[0].Pint = "guiness"
f[1].Bars = make([]bar, 1)
f[1].Bars[0].Bar = "second"
y, err := yaml.Marshal(f)
if err != nil {
log.Fatalf("Marshal: %v", err)
}
fmt.Println(string(y))
}
我想知道是否有办法让它像第一个示例一样生成它?
即使这意味着我必须使用另一个 YAML 库。
【问题讨论】:
-
寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定的问题或错误以及重现它所需的最短代码in问题本身。
-
foo.Bars应该是字符串,而不是切片。 -
@Peter 我想要一个
bar结构数组。这是一个简化的示例,但本质上我需要一个结构数组,并且真的希望它不要打印外部结构名称。 -
这不是您在所需输出中显示的内容。那里的栏字段是字符串。