我正试图从文件中读取并将其加载到结构片中。如块注释所示,我读取的行被正确加载。
我遇到的问题是,class
变量不断返回空值。我做错了什么?
func loadClasses(path string) []Class {
var a []Class
inFile, _ := os.Open(path)
defer inFile.Close()
scanner := bufio.NewScanner(inFile)
scanner.Split(bufio.ScanLines)
var class Class
for scanner.Scan() {
var err = json.Unmarshal(scanner.Bytes(), &class)
if err != nil {
fmt.Print("Error:", err)
} else {
a = append(a, class)
}
}
return a
}
type Class struct {
id string
name string
}
/*
Sample contents
"{"id":124997,"name":"Environmental Sciences"}
{"id":123905,"name":"Physical Education"}
{"id":127834,"name":"Mandarin"}
{"id":123507,"name":"Biology"}
{"id":123883,"name":"German"}
{"id":129148,"name":"German"}
{"id":123545,"name":"Spanish"}"
*/
谢谢你,ivan。感谢你的帮助。我的问题是两部分,结构成员必须大写,我错过了json: "id"
和json: "name"
您可以通过将字段的第一个字母更改为大写来导出Class
结构中的字段,如下所示:
type Class struct{
Id string
Name string
}
可选地,您还可以像这样向字段添加标记:
type Class struct{
Id string `json: "id"`
Name string `json: "name"`
}
关于json
包如何处理编码和解码的更多信息可以分别在json.Marshal
和json.Unmarshal
文档中找到。