У вас структуры совсем не соответствуют тому, что приходит в JSON.
sampleArray — это массив, а не структура.
Теги для version и data не прописаны, поэтому го их ищет в JSON с большой буквы.
Вообще, конкретный формат не очень будет удобно парсить в языке со статической типизацией, ибо элементы массива sampleArray имеют разный тип.
Можно сделать такpackage main
import (
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
)
type Response struct {
Version string `json:"version"`
Data map[string][]interface{} `json:"data"`
}
func main() {
var client http.Client
resp, err := client.Get("https://api.myjson.com/bins/by9gw")
if err != nil {
panic(err)
}
defer resp.Body.Close()
simpleResp := Response{}
fmt.Println("Response code:", resp.StatusCode)
if resp.StatusCode == http.StatusOK {
bodyBytes, err := ioutil.ReadAll(resp.Body)
if err != nil {
panic(err)
}
_ = json.Unmarshal(bodyBytes, &simpleResp)
sampleArr := simpleResp.Data["sampleArray"]
fmt.Println(sampleArr[0])
fmt.Println(sampleArr[1])
casted, ok := sampleArr[2].(map[string]interface{})
if !ok {
panic("Wrong type of sampleArr element")
}
fmt.Println("Name:")
fmt.Println(casted["name"])
}
}