登录
首页 >  Golang >  Go问答

Golang 解析输出以读取密钥(terraform 输出)

来源:stackoverflow

时间:2024-04-29 13:03:33 269浏览 收藏

积累知识,胜过积蓄金银!毕竟在Golang开发的过程中,会遇到各种各样的问题,往往都是一些细节知识点还没有掌握好而导致的,因此基础知识点的积累是很重要的。下面本文《Golang 解析输出以读取密钥(terraform 输出)》,就带大家讲解一下知识点,若是你对本文感兴趣,或者是想搞懂其中某个知识点,就请你继续往下看吧~

问题内容

我一直在尝试解析 terraform 输出以获取 terratest 断言

运行 terratest 的输出是

result := `[{
    "id": "/addresspools/test-pool"
    "name" : "test-pool"
 }]`

请注意,idname 字段后面没有逗号(因此输出不是 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.namebackendaddresspooldata.id

如果我在结果中的 id 字段后面添加一个逗号,则代码可以正常工作。

在这里查看我的完整代码


解决方案


试试这个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"`
}

理论要掌握,实操不能落!以上关于《Golang 解析输出以读取密钥(terraform 输出)》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>