從過去 2 天開始,我不知何故被 JSON 和 Go 困住了。我的目標(biāo)很簡單,一個(gè) Go 程序可以讀取 JSON 文件,正確輸出并將一些項(xiàng)目附加到該 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"] } }}我已經(jīng)在 Go 中成功解析了 JSON,但是當(dāng)我嘗試獲取 JSON["Info"]["Date"] 時(shí),它會(huì)引發(fā)接口錯(cuò)誤。我無法制作特定的結(jié)構(gòu),因?yàn)橹灰{(diào)用代碼/API,所有項(xiàng)目都會(huì)動(dòng)態(tài)更改。我用來解析數(shù)據(jù)的代碼// Open our jsonFilejsonFile, 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 ansjson_data := result["Info"]["Date"] // returns error - type interface {} does not support indexing任何幫助/領(lǐng)導(dǎo)都非常感謝。提前非常感謝。
2 回答

慕虎7371278
TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超4個(gè)贊
您無法使用result[][]. 您需要執(zhí)行以下操作,
info:= result["Info"]
v := info.(map[string]interface{})
json_data = v["Date"]

夢里花落0921
TA貢獻(xiàn)1772條經(jīng)驗(yàn) 獲得超6個(gè)贊
不幸的是,每次訪問解析數(shù)據(jù)時(shí)都必須斷言類型:
date := result["Info"].(map[string]interface{})["Date"]
現(xiàn)在date
是map[string]interface{}
,但它的靜態(tài)已知類型仍然是interface{}
。
這意味著您要么需要提前假設(shè)類型,要么如果結(jié)構(gòu)可能有所不同,則需要某種類型的開關(guān)。
- 2 回答
- 0 關(guān)注
- 153 瀏覽
添加回答
舉報(bào)
0/150
提交
取消