为了账号安全,请及时绑定邮箱和手机立即绑定

Unmarshal() 返回空结构

Unmarshal() 返回空结构

Go
RISEBY 2021-11-01 10:35:27
我正在尝试从文件中读取并将其加载到结构切片中。我读入的行已正确加载,如块注释中所示。我遇到的问题是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"
查看完整描述

1 回答

?
慕码人8056858

TA贡献1803条经验 获得超6个赞

您可以通过将字段Class的第一个字母更改为大写来导出结构中的字段,如下所示:


type Class struct{

  Id string

  Name string

}

或者,您还可以向字段添加标签,如下所示:


type Class struct{

  Id string `json: "id"`

  Name string `json: "name"`

}

有关json包如何处理编码和解码的更多信息可以分别在json.Marshal和json.Unmarshaldocs 中找到。


查看完整回答
反对 回复 2021-11-01
  • 1 回答
  • 0 关注
  • 185 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信