猿问

Unmarshal() 返回空结构

我正在尝试从文件中读取并将其加载到结构切片中。我读入的行已正确加载,如块注释中所示。


我遇到的问题是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"}"


*/

我的问题是两部分,结构成员必须大写,我错过了json: "id"和json: "name"


RISEBY
浏览 186回答 1
1回答

慕码人8056858

您可以通过将字段Class的第一个字母更改为大写来导出结构中的字段,如下所示:type Class struct{  Id string  Name string}或者,您还可以向字段添加标签,如下所示:type Class struct{  Id string `json: "id"`  Name string `json: "name"`}有关json包如何处理编码和解码的更多信息可以分别在json.Marshal和json.Unmarshaldocs 中找到。
随时随地看视频慕课网APP

相关分类

Go
我要回答