dongxu1668 2018-11-26 00:19
浏览 55
已采纳

无法整理YAML结构

I have what I think is a very straightforward YAML structure I'm attempting to write to and read from a file.

appName:
   version: 1.2.3.4
   md5_checksum: 987654321

And I'm really struggling to understand nested structs and how they relate to yaml marshaling.

At this point I have the following:

type Application struct {
    Name     string `yaml:"application"`
    Version  string `yaml:"version"`
    Checksum int    `yaml:"md5_checksum"`
}

yamlData := Application{"MyProgram", "1.2.3.4", 34235234123}
y, err := yaml.Marshal(yamlData)
if err != nil {
    log.Fatal("Yaml marshal failed")
}

err = ioutil.WriteFile("applications.yaml", y, 0644)
if err != nil {
    log.Fatal("File write failed")
}

This gets me close, but the file reads as follows:

application: MyProgram
version: 1.2.3.4
md5_checksum: 34235234123

That looks nice, but this file will be populated by many applications. I've tried a few types of nested structs, but I get hung up on how to supply values to them when finally building them.

  • 写回答

2条回答 默认 最新

  • 普通网友 2018-11-26 22:26
    关注

    I've solved my own problem with help from KibGzr.

    No structs necessary just for the marshaling steps.

    yamlData := map[string]map[string]string{
        appName: map[string]string{"version": appVersion, "md5_checksum": checksumString},
    }
    

    I've created a nested map rather than a struct. This allows me just initialize the map when I've collected all my values rather than trying to work around struct field names. My output is now:

    appName:
      md5_checksum: checksumString
      version: appVersion
    

    Thanks for all the help!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 unity第一人称射击小游戏,有demo,在原脚本的基础上进行修改以达到要求
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
  • ¥500 火焰左右视图、视差(基于双目相机)
  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染