猿问

使用键解析 yaml 提供错误

我有以下需要解析的 yaml,我尝试了以下内容



Build-t:

  before: test1

    - value : dddd 

       -  bbb: zzzz


  after: test2

     - value: bbb

        - aaa: aaaa



我试过以下内容:


type root struct{

 build type Build `yaml:"Build-t,omitempty"`



type Build struct {

    Before map[string]interface{} `yaml:"before,omitempty"`

    After map[string]interface{} `yaml:"after,omitempty"`

 }

现在当我解析它时出现错误,


我需要的是从对象中获取值before,after这些值是 yaml 中的硬编码值,它下面的所有其他值都是动态添加的,因此我把它作为interface


顺便说一句,如果我将根更改为此它的工作,我会看到下面的所有字段,Build-t但它们before and after就像键一样......


type root struct{

 build type map[string]interface{} `yaml:"Build-t,omitempty"`

错误是:


line 6: cannot unmarshal !!str `test1` into map[string]interface {}

        line 7: cannot unmarshal !!str `test2` into map[string]interface {}

在此处查看有效的 yaml https://codebeautify.org/yaml-validator/cb705458


慕仙森
浏览 204回答 1
1回答

阿波罗的战车

听起来不错——YAML 无效。你的意思是这样的吗?Build-t: before:   test1:     - value: dddd     - bbb: zzzz after:   test2:     - value: bbb     - aaa: aaaa请记住,空格很重要,它是一个键值结构——所以你的值可以是字符串,也可以是子结构——不能两者都是。另外,那个 yaml 验证器......我似乎无法让它声明任何东西无效!
随时随地看视频慕课网APP

相关分类

Go
我要回答