登录
首页 >  Golang >  Go问答

golang 从 Vault 文件中解组 yaml

来源:stackoverflow

时间:2024-04-23 10:21:32 202浏览 收藏

在Golang实战开发的过程中,我们经常会遇到一些这样那样的问题,然后要卡好半天,等问题解决了才发现原来一些细节知识点还是没有掌握好。今天golang学习网就整理分享《golang 从 Vault 文件中解组 yaml》,聊聊,希望可以帮助到正在努力赚钱的你。

问题内容

使用下面的代码,我可以从 ansiblevault 文件中获取 yaml,结果是:

---
dbtype: redis
vsad: go0v

当尝试解组 yaml 时,我只得到:

map[string]string(nil)

我的预期目标是取消文件存储、编辑数据、重新存储文件。

如何实现解组以便编辑数据?

package main

import (
    "fmt"
    "github.com/sosedoff/ansible-vault-go"
    "gopkg.in/yaml.v2"
)

type Props struct {
    values map[string]string
}
func main() {
    str, err := vault.DecryptFile("/tmp/tmpvlt", `.NunY4hb33zWx!)`)
    if err != nil {
        panic(err)
    }
    props := Props{}
    err2 := yaml.Unmarshal([]byte(str), &props)
    if err2 != nil {
        panic(err2)
    }
    fmt.Println(str)
    fmt.Printf("%#v\n",props.values)

}

正确答案


你想做其中之一

var props map[string]string

err2 := yaml.Unmarshal([]byte(str), &props.values)

在您当前的代码中,解组器无法访问私有字段 values,即使您通过将其重命名为 values 将其公开,它也不会被填充,因为您的 yaml 没有名为 values 的顶级键。

终于介绍完啦!小伙伴们,这篇关于《golang 从 Vault 文件中解组 yaml》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布Golang相关知识,快来关注吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>