За последние 2 дня я как-то застрял с JSON и Go. Моя цель очень проста - одна программа Go, которая может прочитать файл JSON, правильно вывести его и добавить некоторые элементы в этот JSON, а затем перезаписать его обратно на диск.
Сохраненный файл JSON.
{
"Category": ["food","music"],
"Time(min)": "351",
"Channel": {
"d2d": 10,
"mkbhd": 8,
"coding Train": 24
},
"Info": {
"Date":{
"date":["vid_id1","vid_id2","vid_id3"],
"02/11/2019":["id1","id2","id3"],
"03/11/2019":["SonwZ6MF5BE","8mP5xOg7ijs","sc2ysHjSaXU"]
},
"Videos":{
"videos": ["Title","Category","Channel","length"],
"sc2ysHjSaXU":["Bob Marley - as melhores - so saudade","Music","So Saudade","82"],
"SonwZ6MF5BE":["Golang REST API With Mux","Science & Technology","Traversy Media","44"],
"8mP5xOg7ijs":["Top 15 Funniest Friends Moments","Entertainment","DjLj11","61"]
}
}
}
Я успешно проанализировал JSON в Go, но затем, когда я пытаюсь получить JSON ["Info"] ["Date"], он выдает ошибку интерфейса. Я не могу создать конкретную структуру, потому что все элементы будут динамически изменяться при каждом вызове кода / API.
Код, который я использую для анализа данных
// Open our jsonFile
jsonFile, err := os.Open("yt.json")
if err != nil {fmt.Println(err)}
fmt.Println("Successfully Opened yt.json")
defer jsonFile.Close()
byteValue, _ := ioutil.ReadAll(jsonFile)
var result map[string]interface{}
json.Unmarshal([]byte(byteValue), &result)
json_data := result["Category"] //returns correct ans
json_data := result["Info"]["Date"] // returns error - type interface {} does not support indexing
ЛюбойПомощь / руководство высоко ценится. Большое спасибо заранее.