У меня проблемы с отменой вызова следующего json:
{
"input-1": [
"S",
15.0,
"some1",
[
[
1111111.357,
"QQ",
"Toronto"
]
]
],
"input-2": [
"EE",
90.1,
"some2",
[
[
55555550.705,
"RR",
"Kuala Lumpur"
],
[
22233330.134,
"OO",
"Bogota"
]
]
],
"input-3": [
"UU",
87.0,
"some99",
[
[
8800221.500,
"LL",
"Lagos"
]
]
]
}
Мой соответствующий код выглядит так:
package main
import (
"fmt"
"encoding/json"
"os"
"io/ioutil"
)
type InputC struct {
Type string
SomeFloat float64
CorrespondingPerson string
Desc []Under
}
type Under struct {
IDCity float64
CityType string
CityName string
}
func main() {
f, err := os.OpenFile("data.json", os.O_RDONLY, 0755)
if err != nil {
fmt.Printf("Error opening file: %v\n", err)
}
b, err := ioutil.ReadAll(f)
if err != nil {
fmt.Printf("Error reading file: %v\n", err)
}
inputs:= map[string]InputC{}
err = json.Unmarshal(b, &inputs)
if err != nil {
fmt.Printf("Error Unmarshalling file: %v\n", err)
}
for k, v := range(inputs) {
fmt.Printf("%v\n",v.Desc[0].IDCIty)
}
}
Ответ, который я получаю от этого кода: :
Ошибка файла демаршаллинга: json: не удается распаковать массив в Go значение типа main.Input C pani c: ошибка времени выполнения: индекс выходит за пределы диапазона
После чего я изменил свой код на это:
inputs:= []InputC{}
, но все еще получаю ошибку:
Ошибка Unmarshalling file: json: не удается разархивировать объект в Go значение типа [] main.Input C
Совершенно очевидно, что мне чего-то не хватает, но я не могу понять, как извлечь информацию из JSON, которая у меня есть.