Golang项目如何访问JSON文件中的环境变量



我的团队正在使用Golang进行编码,我们将所有配置放在一个conf.json中,下面显示了有趣的部分,以及另一个用于json验证的config_schema.json文件中。

{
"host": "192.168.0.34",
"port": "5678",
"username": "test_user",
"password": "random_pass",
"dbName": "dummy"
}

我的问题是,我可以定义环境变量吗?例如$USER和$PASS,并按以下方式使用它们吗?或者为了安全起见,有合适的方法可以实现这一点吗?

{
"host": "192.168.0.34",
"port": "5678",
"username": "$USER",
"password": "$PASS",
"dbName": "dummy"
}

也许已经太晚了,因为问题已经存在1年了但是你可以使用https://golang.org/pkg/os/#ExpandEnv和https://golang.org/pkg/encoding/json/#Unmarshaler

为了使用Unmarshaler,您应该有一个对应于json的struct。然后你可以覆盖默认方法,只替换你想要的字段。下面是

result := os.ExpandEnv(jsonString)

实例:https://play.golang.org/p/78C2zyYP6vL

我们最终使用env-var,在Gitlab CI环境变量中定义用户名和密码,并启用掩码,这样它们就不会显示在日志中。

最新更新