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
包要求它们如此
我正在使用包 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
包要求它们如此