【问题标题】:How unmarshal dynamic keys如何解组动态键
【发布时间】:2021-11-23 07:07:52
【问题描述】:

我有一个结构如下的 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"}
     }
}

类似于jq中的to_entries

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

谢谢!

【问题讨论】:

  • struct schema 需要匹配 yml schema。根据您的 yaml,如果您想在不更改您的 yaml 架构的情况下将其转换为 []struct{string,[] string,这将是一个 map[string][]string,请在解析 yaml 后执行此操作。

标签: go yaml


【解决方案1】:

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

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

【讨论】:

  • 是的,这就是我想的。这是有道理的。我会尝试这种方式,看看这是否对我有用。如果没有,请调整。
猜你喜欢
  • 2019-06-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-22
  • 2021-11-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多