将 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中文网其他相关文章!