将GO YAML解组到地图或字符串

Naatan:

我试图解组YAML条目,这些条目可以是字符串或键列表:值字符串(根据Go映射)。我无法弄清楚如何做到这一点。我知道我可以编写自己的解组器,但这似乎仅适用于结构。

我有第一部分工作:

package main

import (
    "log"

    "gopkg.in/yaml.v2"
)

type Data struct {
    Entry []Entry `yaml:"entries"`
}

type Entry map[string]string

var dat string = `
entries: 
  - keya1: val1
    keya2: val2
  - keyb1: val1
    keyb2: val2
  - val3`

func main() {
    out := Data{}
    if err := yaml.Unmarshal([]byte(dat), &out); err != nil {
        log.Fatal(err)
    }

    log.Printf("%+v", out)
}

但是- val3显然,条目现在导致错误。我如何才能识别列表和单个字符串条目?

谢谢

本杰明·卡迪什(Benjamin Kadish):

以前已经以各种方式回答了这个问题,但是长话短说,很容易将其分解为一个接口,然后处理这两种情况

type Entry interface{}

for _, entry := range out.Entry {
        switch i := entry.(type) {
        case string:
            log.Printf("i is a string %+v\n", i)
        case map[interface{}]interface{}:
            log.Printf("i is a map %+v\n", i)
        }

}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将字符串,整数和数组的JSON对象解组到地图中

无法将字符串解组到Go struct字段中

json:无法将字符串解组到Go struct字段中

将json数组解组到go struct中(数组位于JSON字符串的中间

yaml:解组错误:无法将字符串解组为时间。Golang中的持续时间

得到:无法将字符串解组为Go值

无法将字符串解组到类型模型的Go struct字段Article.article_type中。

将YAML解组到有序地图

将地图减少到 terraform 中的字符串

将json字符串解组到具有结构本身一个元素的结构

将具有重复字段的字符串解组到json中

无法将字符串解组为int64类型的Go值

json:无法将字符串解组为main.test_struct类型的Go值

json:无法将字符串解组为[] main.KVU类型的Go值

Golang-无法将数字解组为字符串类型的Go值

无法将字符串解组为struct类型的Go值

Docker返回“ json:无法将字符串解组为[] string类型的Go值”

如何使用go的json标签将数字和字符串属性解组为字符串值

Terraform:“错误解码 JSON:json:无法将字符串解组到 Go struct 字段 ContainerDefinition”aws_ecs_task_definition 资源

无法在 Go 中将 !!seq 解组为字符串

如何在Go中解组转义的JSON字符串?

将“ XML元素”解组为字符串属性

如何将空字符串解组为nil

将JSON字符串解组为常量

在Go中将JSON解组到地图中

部分JSON解组到Go中的地图

将JSON读入GO字符串

如何使用 go-mongo-driver 将 BSON 字符串值解组为自定义类型?

将JSON解组到Go接口{}