go - 问题解析yaml文件

标签 go struct yaml

我有以下结构,在解析 yaml 文件后填充 问题是引用丢失了

File in.yaml

例如

_schema: "3.0.0"
bar:
- one

File out.yaml

_schema: 3.0.0
bar:
- one

如你所见,我得到的是 3.0.0 而不是 “3.0.0” ,知道如何克服这个问题吗

这是我创建的一个小程序来演示这个问题

package main

import (
    "gopkg.in/yaml.v2"
    "io/ioutil"
)

type Config struct {
    Schema string `yaml:"_schema"`
    Bar []string
}

func main() {

    cfg := Config{}
    source, err := ioutil.ReadFile("in.yaml")
    if err != nil {
        panic(err)
    }
    err = yaml.Unmarshal([]byte(source), &cfg)
    if err != nil {
        panic(err)
    }
    y, _ := yaml.Marshal(&cfg)
    err = ioutil.WriteFile("out.yaml", y, 0644)}

}

最佳答案

YAML 标准不要求引用所有值,仅当您要使用转义序列或使用某些字符时才需要引用。

您正在使用的这个库仅在必要时才在字符串周围添加 "..."。例如,如果您在字符串中使用冒号(尝试:“3:0:0”),它将保留在双引号中。

关于go - 问题解析yaml文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47923157/

相关文章:

types - golang 类型断言使用 reflect.Typeof()

java - 为 Map<Enum,Integer> 加载 YAML fixture

unit-testing - 如何在不创建实际网络连接的情况下测试依赖于 net.Conn 的代码?

go - cmd.Process.Kill() 调用后进程不会终止

go - 如何使用反射来设置嵌套的结构域值

validation - 如何验证结构创建?

c - 数组的选择排序结构问题

c - 警告 TokenList 类型转换

yaml - 无服务器变量插值 env:VAR 使用 Fn::GetAtt 回退

java - 是否可以使用 Spring 和 @Value 注释将 YAML 属性读入 Map