да я ступил со структурой. Сделал правильно, но теперь почему то если получать данные из функции
type AutoGenerated struct {
ID string `json:"id"`
Result struct {
Maps struct {
Test []struct {
Value int `json:"Value"`
} `json:"*Test"`
} `json:"Maps"`
Disabled bool `json:"Disabled"`
} `json:"result"`
Error interface{} `json:"error"`
}
func getTest(param1 string) string {
var jsonStr = []byte(fmt.Sprintf(`{"id":"0", "jsonrpc":"2.0", "method":"getTest", "params":[{"Param":"%s"}]}`, param1))
req, err := http.NewRequest("POST", "Some Url", bytes.NewBuffer(jsonStr))
req.Header.Set("Content-Type", "application/json")
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
log.Error(err)
panic(err.Error())
}
defer resp.Body.Close()
body, _ := ioutil.ReadAll(resp.Body)
var data AutoGenerated
err = json.Unmarshal(body, &data)
fmt.PrintLn(data.Result.Maps.Test[0].Value)
fmt.PrintLn(data.Result.Maps.Test)
}
fmt.PrintLn(data.Result.Maps.Test) возвращает [{6325}]
А fmt.PrintLn(data.Result.Maps.Test[0].Value) возвращает
http: panic serving 127.0.0.1:49180: runtime error: index out of range
хотя такой код отрабатывает без ошибок
package main
import (
"encoding/json"
"fmt"
)
func main() {
var jsonBlob = []byte(`
{"id": "0",
"result":{
"Maps":{
"*Test":[
{"Value": 6325}
]
},
"Disabled": false
},
"error": null
}`)
type AutoGenerated struct {
ID string `json:"id"`
Result struct {
Maps struct {
Test []struct {
Value int `json:"Value"`
} `json:"*Test"`
} `json:"Maps"`
Disabled bool `json:"Disabled"`
} `json:"result"`
Error interface{} `json:"error"`
}
var species AutoGenerated
err := json.Unmarshal(jsonBlob, &species)
if err != nil {
fmt.Println("error:", err)
}
fmt.PrinДт(species.Result.Maps.Test[0].Value)
}