2015-03-12 3 views
1

У меня есть трудное время, чтобы развязать этот кусок YAML в Go. Ошибка, которую я получаю, - cannot unmarshal !!seq into map[string][]map[string][]string. Я пробовал все виды карт без успеха (карты [строки] строки [] карта [строка] строка и так далее)Как развязать YAML в Go

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

type AppYAML struct { 
    Runtime  string       `yaml:"runtime,omitempty"` 
    Handlers  map[string][]map[string][]string `yaml:"handlers,omitempty"` 
    Env_Variables map[string]string    `yaml:"env_variables,omitempty"` 
} 

func main() { 
    s := ` 
runtime: go 
handlers: 
- url: /.* 
    runtime: _go_app 
    secure: always 
env_variables: 
    something: 'test' 
` 

    var a AppYAML 
    if err = yaml.Unmarshal([]byte(s), &a); err != nil { 
     log.Error(err) 
     return 
    } 
} 

ответ

4

Изменить объявление типа этого:

type AppYAML struct { 
    Runtime  string    `yaml:"runtime,omitempty"` 
    Handlers  []map[string]string `yaml:"handlers,omitempty"` 
    Env_Variables map[string]string `yaml:"env_variables,omitempty"` 
} 
Смежные вопросы