Не удалось распаковать вложенный yaml - PullRequest
0 голосов
/ 14 февраля 2020

Вход Yaml:

Tasks:
 - task: 
    name: 123
    retry: 5
    next: 123
 - task: 
    name: 123
    retry: 5
    next: 123

код:

package main

import (
    "fmt"
    "io/ioutil"
    "os"

    "gopkg.in/yaml.v2"
)

type Tasks []struct {
    Task Task `yaml:"task"`
}

type Task struct {
    Name  string `yaml:"name"`
    Retry int    `yaml:"retry"`
    Next  string `yaml:"next"`
}

func main() {
    var w Tasks
    wfyaml, _ := os.Open(".yaml")
    byteValue, _ := ioutil.ReadAll(wfyaml)
    yaml.Unmarshal(byteValue, &w)
    fmt.Printf("%+v\n", w)
}

Вывод: []

Я не могу понять, в чем причина проблемы. Я проверил, что я могу.

1 Ответ

1 голос
/ 14 февраля 2020

Вы пропустили верхний слой (Tasks) в своей структуре ( детская площадка ):

package main

import (
    "fmt"

    "gopkg.in/yaml.v2"
)

const yamlStr = `Tasks:
 - task: 
    name: 123
    retry: 5
    next: 123
 - task: 
    name: 123
    retry: 5
    next: 123`

type File struct {
    Tasks Tasks `yaml:"Tasks"`
}

type Tasks []struct {
    Task Task `yaml:"task"`
}

type Task struct {
    Name  string `yaml:"name"`
    Retry int    `yaml:"retry"`
    Next  string `yaml:"next"`
}

func main() {
    var w File
    yaml.Unmarshal([]byte(yamlStr), &w)
    fmt.Printf("%+v\n", w)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...