我要做的就是从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 关注
- 286 浏览
添加回答
举报
0/150
提交
取消