我一直在尝试为Terratest断言解析terraform输出
运行terratest的输出是
result := `[{
"id": "/addressPools/test-pool"
"name" : "test-pool"
}]`
请注意, id 和名称字段后没有逗号(因此输出不是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字段后添加逗号,则代码可以正常工作。
查看我完整的代码here
最佳答案
试试这个https://play.golang.org/p/pH8t2XXBF0W
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"`
}
关于json - Golang解析输出以读取键(地形输出),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61070959/