【问题标题】:Issue parsing yaml file解析 yaml 文件的问题
【发布时间】:2018-06-04 00:35:09
【问题描述】:

我在解析 yaml 文件后填充了以下结构 问题是报价丢失了

.yaml 中的文件

例如

_schema: "3.0.0"
bar:
- one

文件 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)}

}

【问题讨论】:

  • 为什么需要引号?因为它只是一个字符串,所以没关系

标签: go struct yaml


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-04
    • 2023-03-31
    • 2014-11-05
    • 1970-01-01
    • 2015-04-25
    相关资源
    最近更新 更多