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

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

通過解碼go中的JSON文件來創建結構數組

通過解碼go中的JSON文件來創建結構數組

Go
搖曳的薔薇 2021-04-16 22:19:58
我要做的就是從json編碼的文件中創建一個struct Response數組。包含json數據的文件如下所示。貓init.txt{"events": [{"action":"cpr","id":69,"sha1":"abc","cpr":"cpr_data0"},{"action":"cpr","id":85,"sha1":"def","cpr":"cpr_data1"}]}我解決這個問題的方法是我創建了一個response類型的map[string][]Response..解碼文件中的JSON..創建了一個responseStruct類型[]Response但是以某種方式,當我檢查值時,它們都看起來為0或為空map[events:[{ 0  } { 0  }]上面提到的方法有什么問題。type Response struct {  action string `json:"action"`  id     int64  `json:"id"`  sha1   string `json:"sha1"`  cpr    string `json:"cpr"`}func main() {  file, err := os.Open("init.txt")  if err != nil {    fmt.Println(err)    os.Exit(1)  }  var response map[string][]Response  err = json.NewDecoder(file).Decode(&response)  if err != nil {    fmt.Println(err)    os.Exit(1)  }  var responseArray []Response  responseArray = response["events"]  for _, responseStruct := range responseArray {    fmt.Println("id =", responseStruct.id)    fmt.Println("action =", responseStruct.action)    fmt.Println("sha1 = ", responseStruct.sha1)    fmt.Println("cpr =", responseStruct.cpr)    fmt.Println("==========")  }  fmt.Println(response)}好吧,如果我修改結構使其看起來像這樣,那就可以了type Response struct {  Action string `json:"action"`  ID     int64  `json:"id"`  Sha1   string `json:"sha1"`  Cpr    string `json:"cpr"`}所以我的問題是,這些東西將如何工作,難道我不能讓上面的代碼按原樣工作嗎?
查看完整描述

2 回答

?
Smart貓小萌

TA貢獻1911條經驗 獲得超7個贊

golang中的小寫struct元素是私有的,因此json解碼器(是一個外部程序包)無法訪問它們。它能夠創建struct對象,但不能設置值。它們顯示為零,因為它們是默認值0。


查看完整回答
反對 回復 2021-04-19
  • 2 回答
  • 0 關注
  • 325 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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