2017-05-05 4 views
0

저는 int와 문자열 목록 인 datastructure에 대해 YAML을 작성하려고합니다. 하지만 데이터 구조와 일치시킬 YAML 문자열을 가져 오는 데 문제가 있습니다. 예를 들어Unmarshal YAML Map Nested With List

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"` 
} 

으로 유형을 변경

lowercased 필드 이름을 기본 키로 사용합니다. 사용자 정의 키 필드 태그에 "YAML"이름을 통해 정의 될 수

가 또는 당신은 당신이 사용자 정의 이름을 지정할 필요가 없습니다 것입니다 value 같은 소문자 필드를 사용하도록 YAML 입력을 변경할 수 있습니다.