为了账号安全,请及时绑定邮箱和手机立即绑定

将结构编组到yaml时,Golang如何避免键“on”上的双引号

将结构编组到yaml时,Golang如何避免键“on”上的双引号

Go
鸿蒙传说 2022-10-31 15:42:53
我有一个简单的结构,例如:type Foo struct {     On string `yaml:"on"`}并希望以任何一种方式将此结构编组为 YAML 字符串方式1:https ://go.dev/play/p/Btwt3Gi09ZG方式2:https ://go.dev/play/p/r9jwscnuOAR始终在键“on”上使用双引号得到相同的结果"on": hello我怎样才能避免这种情况?以下是我想要的结果on: hellogo的版本是go1.17.2 darwin/amd64
查看完整描述

1 回答

?
qq_笑_17

TA贡献1818条经验 获得超7个赞

这将是无效的 YAML1.1(或至少令人困惑),因为on关键字被解释为布尔值true(请参阅YAML1.1 规范)。

根据go-yaml 文档

yaml 包支持 YAML 1.2 的大部分内容,但保留了 1.1 中的一些行为以实现向后兼容性。

具体来说,从 yaml 包的 v3 开始:

  • 只要将 YAML 1.1 布尔值(是/否,开/关)解码为类型化的布尔值,它们就受支持。否则,它们表现为字符串。YAML 1.2 中的布尔值仅是真/假。

如果您更改yaml:"on"为其他任何内容,例如yaml:"foo"key 将不会被引用。

type T struct {

    On  string `yaml:"on"`

    Foo string `yaml:"foo"`

}


func main() {

    t := T{

        On:  "Hello",

        Foo: "world",

    }


    b, _ := yaml.Marshal(&t)

    fmt.Println(string(b))

}


// "on": hello

// foo: world


查看完整回答
反对 回复 2022-10-31
  • 1 回答
  • 0 关注
  • 125 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号