我要做的就是從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。
- 2 回答
- 0 關注
- 325 瀏覽
添加回答
舉報
0/150
提交
取消