go - 当我不知道 yaml 中每个可能的字段时,如何修改 go 中的 yaml 字段?

标签 go yaml

当我不知道 yaml 可以拥有的每个可能字段时,如何修改 yaml 中的字段?我无法定义一个包含所有可能字段的结构,并且 gopkg.in/yaml.v2 Unmarshall 会忽略不在提供的结构中的字段,因此 Marshall 丢失了结构中不存在的任何字段,这是 Not Acceptable 。

是否有一个包允许我动态指定一个字段名称,如果该字段存在,则返回基本值或结构,否则返回 nil/err?并整理我的更改,同时保留输入 yaml 中的所有其他字段?

谢谢,保罗

最佳答案

使用 map[interface{}]interface{} 进行解码就成功了:

            wcc := make(map[interface{}]interface{})
            err := yaml.Unmarshal([]byte(wccString), &wcc)

访问 yaml 结构的符号(对我来说)并不直观,但我最终找到了一个有效的咒语:

wcc["extensions"].(map[interface{}]interface{})["scriptURLs"].([]interface{})[2] = "https://192.168.0.3:8080/..."

关于go - 当我不知道 yaml 中每个可能的字段时,如何修改 go 中的 yaml 字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58103857/

相关文章:

java - 保存多对多时引用完整性约束违规 - Ebean、Play、Yaml、测试

yaml - 如何在 YAML 配置文件中设置/获取 HashMap?

Ruby - 使用 YAML 解析哈希的字符串 - 如果哈希输入原始并强制转换为字符串而不是作为字符串输入则出错

python - 解析嵌套的自定义 yaml 标签

xml - 通过仅使用一种结构类型在 go 中编码/解码来重构 xml

Go 1.9 在 Windows 10 上出现运行时错误

java - 将私钥放入带有变量的 application.yml 中

go - 附加到循环中的 slice

c++ - 在树莓派上构建 libtensorflow.so 时出错

go - 创建二维 slice 时出错