我正在尝试通过创建JSON文件并将其解析为结构来配置Go程序:
var settings struct { serverMode bool sourceDir string targetDir string } func main() { // then config file settings configFile, err := os.Open("config.json") if err != nil { printError("opening config file", err.Error()) } jsonParser := json.NewDecoder(configFile) if err = jsonParser.Decode(&settings); err != nil { printError("parsing config file", err.Error()) } fmt.Printf("%v %s %s", settings.serverMode, settings.sourceDir, settings.targetDir) return }
config.json文件:
{ "serverMode": true, "sourceDir": ".", "targetDir": "." }
该程序可以编译并运行,没有任何错误,但是print语句输出:
false
(错误和两个空字符串)
我也尝试过,json.Unmarshal(..)但结果相同。
json.Unmarshal(..)
如何以填充结构值的方式解析JSON?
您没有导出struct元素。它们都以小写字母开头。
var settings struct { ServerMode bool `json:"serverMode"` SourceDir string `json:"sourceDir"` TargetDir string `json:"targetDir"` }
将结构元素的首字母大写以将其导出。JSON编码器/解码器不会使用未导出的结构元素。