2017-12-21 29 views
1

私持っている問題は、引用符が欠落していることであるYAMLファイル を解析した後に満たされ、次の構造体問題の解析YAMLファイル

ファイル

in.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)} 

} 
+2

引用符が必要なのはなぜですか?これは単なる文字列なので重要ではありません – tinita

答えて

2

YAML標準では、エスケープシーケンスを使用する場合や特定の文字を使用する場合にのみ、すべての値を引用符で囲む必要はありません。

使用しているこのライブラリは、必要なときにのみ文字列の周りに"..."を追加します。たとえば、文字列にコロンを使用した場合(try: "3:0:0")、二重引用符で囲まれます。