请教一下,用go如何提取这个复杂的yaml

karl_zhao · 2020-12-17 17:11:58 · 1621 次点击 · 大约8小时之前 开始浏览    置顶
这是一个创建于 2020-12-17 17:11:58 的主题,其中的信息可能已经有所发展或是发生改变。

各位大佬,想要提取下面这份yaml, 应该如何定义数据结构来提取呢?

- import: /testlist.yaml

- test: xxx_invalid_test

description: >

xxx at a higher priv mode

iterations: 2

gen_test: xxx_random_test

gen_opts: >

+datar_cnt=1000

+num_of_block=2

+enable_invalid_level=1

func_test: main_invalid_test

sim_opts: >

+require_signature=1

我用github.com/goccy/go-yaml, 做法如下: type YamlTestConfig struct {

TestName stringyaml:"test"``

Description stringyaml:"description"``

GenOptions []stringyaml:"gen_opts"``

Iteration intyaml:"iterations"``

GenTestName stringyaml:"gen_test"``

FuncTestName stringyaml:"rtl_test"``

SimOptions []stringyaml:"sim_opts"``

}

type ConfigInformation struct {

ImportFile stringyaml:"import"``

TestConfigs []YamlTestConfig

}

程序一直没有反应,麻烦大佬们指点一下,谢谢!


有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1621 次点击  
加入收藏 微博
4 回复  |  直到 2020-12-31 18:46:09
Atticus
Atticus · #1 · 5年之前

你发一下你的yaml文件啊

karl_zhao
karl_zhao · #2 · 5年之前
AtticusAtticus #1 回复

你发一下你的yaml文件啊

image.png

就是帖子上面的内容

mmlaigolang
mmlaigolang · #3 · 5年之前

tag 应该放在``里面吧 而且还要声明一个结构体包含[]ConfigInformation吧

Atticus
Atticus · #4 · 5年之前

如3楼所说,tag应放在``内,另外,如果可能的话建议改下yaml格式:

package main

import (
    "fmt"
    "gopkg.in/yaml.v2"
    "os"
)

var yamlStr string = `
import: "/testlist.yaml"
tests:
- test: "xxx_invalid_test"
  description: >
    "xxx at a higher priv mode"
  iterations: 13
`

type Config struct {
    Import string `yaml:"import"`
    Tests  []struct {
        Test        string `yaml:"test"`
        Description string `yaml:"description"`
        Iterations  int    `yaml:"iterations"`
    } `yaml:"tests"`
}

func main() {
    var c Config
    err := yaml.Unmarshal([]byte(yamlStr), &c)
    if err != nil {
        fmt.Println(err)
        os.Exit(-1)
    }
    fmt.Println(c.Tests[0].Description)
}

"xxx at a higher priv mode"

添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传