当前位置: > > > > Golang 解析输出以读取密钥(terraform 输出)
Golang 解析输出以读取密钥(terraform 输出)
来源:stackoverflow
2024-04-29 13:03:33
0浏览
收藏
积累知识,胜过积蓄金银!毕竟在Golang开发的过程中,会遇到各种各样的问题,往往都是一些细节知识点还没有掌握好而导致的,因此基础知识点的积累是很重要的。下面本文《Golang 解析输出以读取密钥(terraform 输出)》,就带大家讲解一下知识点,若是你对本文感兴趣,或者是想搞懂其中某个知识点,就请你继续往下看吧~
问题内容
我一直在尝试解析 terraform 输出以获取 terratest 断言
运行 terratest 的输出是
result := `[{
"id": "/addresspools/test-pool"
"name" : "test-pool"
}]`
请注意,id 和 name 字段后面没有逗号(因此输出不是 json)
这是我迄今为止尝试过但没有成功的方法,
type BackendAddressPool struct {
ID string `json:"id"`
Name string `json:"name"`
}
func main () {
result := `[{
"id": "/addressPools/test-pool"
"name" : "test-pool"
}]`
var backendAddressPoolData []BackendAddressPool
json.Unmarshal([]byte(result), &backendAddressPoolData)
fmt.Println(backendAddressPoolData)
// outputs -> []
}
我想要的是读取输出值,例如 backendaddresspooldata.name 和 backendaddresspooldata.id
如果我在结果中的 id 字段后面添加一个逗号,则代码可以正常工作。
在这里查看我的完整代码
解决方案
试试这个
func main() {
result := `[{
"id": "/addressPools/test-pool"
"name" : "test-pool"
}]`
result = strings.ReplaceAll(result, "\n", "")
result = strings.ReplaceAll(result, " ", "")
result = strings.ReplaceAll(result, `""`, `","`)
fmt.Println(result)
var backendAddressPoolData []BackendAddressPool
json.Unmarshal([]byte(result), &backendAddressPoolData)
fmt.Println(backendAddressPoolData)
}
type BackendAddressPool struct {
ID string `json:"id"`
Name string `json:"name"`
}
理论要掌握,实操不能落!以上关于《Golang 解析输出以读取密钥(terraform 输出)》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注米云公众号吧!
