2017-05-05 12 views
0

私は文字列のintとリストの両方のデータ構造に対してYAMLを書こうとしています。しかし、データ構造とYAML文字列を一致させるのに問題があります。例えばUnmarshal YAML Mapネストしたリスト

package main 

import (
    "fmt" 
    "log" 

    yaml "gopkg.in/yaml.v2" 
) 

type ThingAndGroups struct { 
    Groups []string 
    Value int 
} 

var someStr = ` 
thing1: 
    Groups: 
    - g1 
    - g2 
    Value: 
    5 
` 

func main() { 
    t := make(map[string]ThingAndGroups) 

    err := yaml.Unmarshal([]byte(someStr), &t) 
    if err != nil { 
     log.Fatalf("error: %v", err) 
    } 
    fmt.Printf("--- t:\n%v\n\n", t) 
} 

戻り

マップ[thing1:{[]} 0]

私はthing1は、文字列のリストであることを取得するにはどうすればよいですか?

答えて

1
は、それが

構造体のフィールドは、彼らが(大文字の最初の文字を持っている)エクスポートされた場合にのみ、非整列化され、かつ非整列化していると言うhttps://godoc.org/gopkg.in/yaml.v2#Marshal用ドキュメントでは、この

type ThingAndGroups struct { 
    Groups []string `yaml:"Groups"` 
    Value int  `yaml:"Value"` 
} 

にあなたのタイプを変更し

小文字の小文字のフィールド名をデフォルトのキーとして使用します。カスタムキーはまた、あなたが、あなたはカスタム名を指定する必要はありませんvalueのような小文字のフィールドを使用するようにYAMLの入力を変更することができ

フィールドタグに「YAML」名で定義することができます。

関連する問題