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条)

报告相同问题?

悬赏问题

  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效