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

时间:2017-10-15 19:30:19

标签: json go struct config decoding

我使用包Decoder中的encoding/json将JSON配置文件解码为结构。字段名称在文件和结构中具有不同的大小写(由于可见性问题,结构中的小写第一个字符),因此我使用documentation中描述的struct字段标记。 问题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: 

1 个答案:

答案 0 :(得分:3)

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