解析 yaml 结构错误

我有以下 yaml ,当我尝试解析它时出现错误,知道这里可能缺少什么吗?我不确定如何构造区域属性。


这是有效的 yaml


https://codebeautify.org/yaml-validator/cb42f23a


错误:


模型 extConfigYaml 中的错误:*yaml:第 4 行:此上下文中不允许映射值


type ExternalConfig struct {

    Landscape zone `yaml:"Landscape"`

}



type zone struct {

    zone models `yaml:"zone"`

}


type models struct {

    models []Model `yaml:"models"`

}


type Model struct {

    AppType     string `yaml:"app-type"`

    ServiceType string `yaml:"service-type"`

}


var external_config = []byte(`

Landscape:

  zone: zone1

   models:

    - app-type: app1

      service-type: GCP


    - app-type: app2

      service-type: AMAZON


  zone: zone2

   models:

    - app-type: app3

      service-type: AZURE

    - app-type: app4Í

      service-type: HEROKU

`)



extConfigYaml := ExternalConfig{}


err = yaml.Unmarshal([]byte(external_config), &extConfigYaml)

if err != nil {

    log.Fatalf("error in model extConfigYaml: %v", err)

}

fmt.Printf("%+v\n", extConfigYaml)


拉丁的传说
浏览 88回答 1
1回答

小怪兽爱吃肉

根据错误:模型 extConfigYaml 中的错误:*yaml:第 4 行:此上下文中不允许映射值您提供的 yaml 内容的缩进错误,其中models缩进级别应与缩进级别匹配zone。除此之外,不需要为它创建一个结构,zone因为它是一个字符串值,但你已经为它分配了一个model包含models数据的结构。您还应该使用大写字母导出结构。将您的代码修改为以下代码:package mainimport (    "fmt"    "log"    "gopkg.in/yaml.v2")type ExternalConfig struct {    Landscape Zone `yaml:"Landscape"`}type Zone struct {    Zone   string  `yaml:"zone"`    Models []Model `yaml:"models"`}type Model struct {    AppType     string `yaml:"app-type"`    ServiceType string `yaml:"service-type"`}var external_config = []byte(`Landscape:  zone: zone1  models:    - app-type: app1      service-type: GCP    - app-type: app2      service-type: AMAZON  zone: zone2  models:    - app-type: app3      service-type: AZURE    - app-type: app4Í      service-type: HEROKU`)func main() {    extConfigYaml := ExternalConfig{}    err := yaml.Unmarshal(external_config, &extConfigYaml)    if err != nil {        log.Fatalln("error in model extConfigYaml: %v", err)    }    fmt.Printf("%+v\n", extConfigYaml)}
打开App,查看更多内容
随时随地看视频慕课网APP