Golang Разбор выходных данных для чтения ключа (вывод terraform) - PullRequest
0 голосов
/ 07 апреля 2020

Я пытался разобрать вывод 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 в результате, код работает нормально.

Смотрите мой полный код здесь

1 Ответ

0 голосов
/ 07 апреля 2020

попробуйте 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"`
}
...