首页 >后端开发 >Golang >为什么我的 Go 结构无法正确解码 JSON?

为什么我的 Go 结构无法正确解码 JSON?

Patricia Arquette
Patricia Arquette原创
2024-11-19 10:25:02178浏览

Why is my Go struct not decoding JSON correctly?

将 JSON 解码为 Go 结构体

在 Go 中,将 JSON 文件解析为结构体需要使用encoding/json 包。但是,不正确的 JSON 结构解析可能会导致意外结果。

考虑下面提供的代码片段:

var settings struct {
    serverMode bool
    sourceDir  string
    targetDir  string
}

func main() {
    // ...
}

使用 JSON 配置文件:

{
    "serverMode": true,
    "sourceDir": ".",
    "targetDir": "."
}

您可能会遇到令人困惑的输出:

false  
(false and two empty strings)

出现此问题是因为未导出结构体元素。默认情况下,以小写字母开头的结构元素对 JSON 编码器/解码器不可见。要解决此问题,请通过大写首字母来导出结构体元素:

var settings struct {
    ServerMode bool `json:"serverMode"`
    SourceDir  string `json:"sourceDir"`
    TargetDir  string `json:"targetDir"`
}

导出结构体元素可确保 JSON 编码器/解码器可以访问和解码结构体值。这将导致 JSON 配置文件正确解析为结构。

以上是为什么我的 Go 结构无法正确解码 JSON?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn