亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 Go 中正確解析 JSON

在 Go 中正確解析 JSON

Go
一只甜甜圈 2023-08-14 14:36:05
從過去 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"]    }  }}我已經在 Go 中成功解析了 JSON,但是當我嘗試獲取 JSON["Info"]["Date"] 時,它會拋出接口錯誤。我無法創建特定的結構,因為每當調用代碼/API 時,所有項目都會動態更改。我用來解析數據的代碼// 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任何幫助/領導都將受到高度贊賞。非常感謝。json去編組解組
查看完整描述

2 回答

?
ITMISS

TA貢獻1871條經驗 獲得超8個贊

不幸的是,每次訪問解析數據時都必須斷言類型:

date := result["Info"].(map[string]interface{})["Date"]

現在datemap[string]interface{},但其靜態已知類型仍然是interface{}。

這意味著您要么需要提前假設類型,要么在結構可能變化的情況下進行某種類型切換


查看完整回答
反對 回復 2023-08-14
?
猛跑小豬

TA貢獻1858條經驗 獲得超8個贊

您無法使用 訪問內部屬性result[][]。你需要做如下的事情,


info:= result["Info"]

v := info.(map[string]interface{})

json_data = v["Date"]


查看完整回答
反對 回復 2023-08-14
  • 2 回答
  • 0 關注
  • 208 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號