JSON 解码器忽略结构字段标签?

JSON Decoder ignores struct field tags?

我正在使用包 encoding/json 中的 Decoder 将 JSON 配置文件解码为结构。字段名称在文件和结构中有不同的大小写(由于可见性问题,结构中的第一个字符小写)所以我使用 documentation 中描述的结构字段标签。 问题Decoder 似乎忽略了这些标签并且结构字段为空。知道我的代码有什么问题吗?

config.json

{
    "DataSourceName": "simple-blog.db"
}

配置结构

type Config struct {
     dataSourceName string `json:"DataSourceName"`
}

正在加载配置

func loadConfig(fileName string) {
    file, err := os.Open(fileName)
    if err != nil {
        log.Fatalf("Opening config file failed: %s", err)
    }
    defer file.Close()

    decoder := json.NewDecoder(file)
    config = &Config{} // Variable config is defined outside
    err = decoder.Decode(config)
    if err != nil {
        log.Fatalf("Decoding config file failed: %s", err)
    }

    log.Print("Configuration successfully loaded")
}

用法

loadConfig("config.json")
log.Printf("DataSourceName: %s", config.dataSourceName)

输出

2017/10/15 21:04:11 DB Name: 

您需要导出 dataSourceName 字段,因为 encoding/json 包要求它们如此