当前位置: > > > > 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 输出)》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注公众号吧!