您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

解析地图Yaml错误

解析地图Yaml错误

您提供的Yaml令牌中包含错误。在此处验证代码中使用的Yaml https://codebeautify.org/yaml- validator/cbaabb32

之后,创建结构类型的变量结果而不是数组。因为您使用的Yaml正在使用Runners数组和api_version创建一个结构。

这个

var runners []Result

应该

var runners Result

因为因为struct不是切片。为yaml中使用的功能名称获取命令列表。您需要遍历runners数组以查找函数名称获取函数的命令值。下面是工作代码

package main

import (
    "fmt"
    "log"

    "gopkg.in/yaml.v2"
)

var runContent = []byte(`
api_ver: 1
runners:
  - name: function1
    type:
    - command: spawn child process
    - command: build
    - command: gulp
  - name: function2
    type:
    - command: run function 1
    - name: function3
    type:
    - command: ruby build
  - name: function4
    type:
  - command: go build
`)

type Result struct {
    Version string    `yaml:"api_ver"`
    Runners []Runners `yaml:"runners"`
}

type Runners struct {
    Name string    `yaml:"name"`
    Type []Command `yaml:"type"`
}

type Command struct {
    Command string `yaml:"command"`
}

func main() {

    var runners Result
    // parse mta yaml
    err := yaml.Unmarshal(runContent, &runners)
    if err != nil {
        log.Fatalf("Error : %v", err)
    }
    commandList := getCommandList("function1", runners.Runners)
    fmt.Printf("%+v", commandList)
}

func getCommandList(name string, runners []Runners) []Command {
    var commandList []Command
    for _, value := range runners {
        if value.Name == name {
            commandList = value.Type
        }
    }
    return commandList
}

操场上的例子

其他 2022/1/1 18:15:44 有443人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶