【发布时间】:2020-01-25 23:14:39
【问题描述】:
当我不知道 yaml 可以具有的每个可能字段时,如何修改 yaml 中的字段?我无法定义一个包含所有可能字段的结构,并且gopkg.in/yaml.v2 Unmarshall 会忽略不在提供的结构中的字段,因此Marshall 会丢失结构中不存在的任何字段,这是不可接受的。
是否有一个包允许我动态指定一个字段名称,如果该字段存在则返回基本值或结构,否则返回 nil/err?并整理我的更改,同时保留输入 yaml 中的所有其他字段?
谢谢,保罗
【问题讨论】:
-
如果您不提前知道密钥,请使用
map。 -
谢谢。您能否指出任何保留任意复杂 yaml 的示例?我见过的示例具有特定 yaml 的特定映射。这与 Kubernetes 尤其相关,其中核心编程技术是获取资源 yaml(通常很复杂,通常记录不充分),更新一些字段,然后应用修改后的 yaml。我正在移植当前在 Javascript 中实现的功能(将 yaml 转换为 JSON),其中动态访问字段并保留所有输入字段只是内置于语言中。我正在尝试整合一些 bash 和 javascript。
-
这是YAML-to-go generator 是一个很好的在线资源,用于在给定示例输入
YAML的情况下构建go兼容结构。 -
我刚刚根据我认为您的源 YAML 的样子发布了一个答案...