首页 > 解决方案 > 如何解组动态键

问题描述

我有一个具有以下结构的 yaml 文件:

mappings:
  extgroup1:
  - somescope1
  - somescope2

  someextgroup:
  - somescope3

  allusers:
  - somescope1

映射基本上是一个数组,但结构只是一组动态键。我想将其解组为一个新数据类型的数组,如下所示:

type ExternalGroupMapping struct {
    ExternalGroup string
    Scopes        []string
}

所以,它看起来像:

[]Mappings{
     ExternalGroupMapping{
         ExternalGroup: "extgroup1"
         Scopes: []string{"somescope1", "somescope2"}
     },
     ExternalGroupMapping{
         ExternalGroup: "someextgroup"
         Scopes: []string{"somescope3"}
     },
     ExternalGroupMapping{
         ExternalGroup: "allusers"
         Scopes: []string{"somescope1"}
     }
}

类似于类似的to_entries东西jq

这样的事情可能吗?甚至不知道从哪里开始。

谢谢!

标签: goyaml

解决方案


如果没有自定义封送处理,您可以通过将动态键映射到映射键来做到这一点。每个映射似乎都是一个范围数组,因此:

type Mappings struct {
   Mappings map[string][]string `yaml:"mappings"`
}

推荐阅读