我要做的就是从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"`
}
所以我的问题是,这些东西将如何工作,难道我不能让上面的代码按原样工作吗?
Smart猫小萌
相关分类