go - 使用mapstructure处理接口(interface)数据

标签 go hashicorp-vault

我正在从 Hashicorp Vault API 获取数据,并努力操作它,因为我对接口(interface)的理解仍然很模糊:(

我正在从 PKI 后端收到 TLS 证书响应。使用 go-dumper,它输出如下:

(0xc4203880c0) &Secret {
  RequestID: "271c63ef-d7b6-a084-18a0-966dd6989f03",
  LeaseID: "",
  LeaseDuration: 0 (int),
  Renewable: false,
  Data: map[string]interface {} {
    "serial_number": interface() ,
    "ca_chain": interface() ,
    "certificate": interface() ,
    "issuing_ca": interface() ,
    "private_key": interface() ,
    "private_key_type": interface()
  },
  Warnings: nil ([]string),
  Auth: nil (*api.SecretAuth),
  WrapInfo: nil (*api.SecretWrapInfo)
}

我想做的是使用 fmt 打印“certficate”字段。所以我这样做了:

创建了一个结构:

type TLSCredentialResp struct {
  IssuingCA  string `mapstructure:"issuing_ca"`
  PrivateKey string `mapstructure:"private_key"`
  CAChain    string `mapstructure:"ca_chain"`
  Cert       string `mapstructure:"certificate"`
}

然后用mapstructure解码进Go:

var response TLSCredentialResp
if err := mapstructure.Decode(docker.Data, &response); err != nil {
  log.Fatal("Error parsing vault's credential response: ", err)
}

fmt.Printf("Private Key: %s", response.PrivateKey)

但是,当我尝试这样做时,我得到以下信息:

Error parsing vault's credential response: 1 error(s) decoding:
* 'ca_chain' expected type 'string', got unconvertible type '[]interface {}'
exit status 1

现在我很清楚我弄错了,因为我正在尝试将接口(interface)解码为字符串。我不清楚的是如何我将 interface() 作为一个类型来处理?简而言之,如何从中获取纯文本证书值?

最佳答案

所以我是个白痴,这比我预期的要容易得多。

我似乎不需要使用 mapstructure,我可以这样做:

fmt.Printf("Private Key: %s", docker.Data["private_key"])
fmt.Printf("Cert: %s", docker.Data["certificate"])

虽然我也不知道为什么..

关于go - 使用mapstructure处理接口(interface)数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44952485/

相关文章:

terraform - Vault - 为一个身份组分配多个别名

java - 将 python 与更快的语言混合以在 GAE 中进行优化

algorithm - 为什么我的红黑树实现基准测试显示线性时间复杂度?

arrays - 在go错误中使用 slice 和数组

(远程)状态文件中的 Terraform 和明文密码

hashicorp-vault - 尝试使用 kv 时,Hashicorp Vault cli 返回 403

Golang 一起调用方法的最有效方式

templates - 多路平等测试失败

python - Hashicorp 金库 : Python hvac does not see secrets

backup - 带文件后端的 Hashicorp Vault 备份