You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Golang JSON解码返回空值,求解析代码解码失败的原因

为什么你的Golang JSON解码后返回空值?

嘿,这问题我见得太多了——核心原因就是结构体字段的可见性!

Go语言里,只有首字母大写的标识符(也就是「导出字段」)才能被外部包访问。而你用的encoding/json包属于外部包,根本看不到那些小写开头的字段,自然没法把JSON里的值映射到你的Config结构体里,解码后自然全是空值。

修复方案:把结构体字段改成首字母大写

只需要把所有需要被JSON解码的字段(包括嵌套结构体里的字段)的首字母改成大写,同时保留原来的json标签(标签是用来对应JSON里的键名的,不用改)。修改后的Config结构体应该是这样:

type Config struct {
    MongoConnectionString string `json:"database"`
    Elastic struct{
        Main string `json:"main"`
        Log string `json:"log"`
    } `json:"elastic"`
    LogFilePath string `json:"logfile"`
}

补充说明

如果你的需求是不想让这些字段在包外被直接修改,但又要支持JSON解码,那可以通过自定义UnmarshalJSON方法来实现,但对于大多数常规场景来说,直接导出字段是最简单、最符合Go idiom的做法。

修改完之后再运行你的代码,就能正确解析config.json里的内容啦!

内容的提问来源于stack exchange,提问作者wolter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:23:26