I'm trying to configure my Go program by creating a JSON file and parsing it into a struct:
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
}
The config.json file:
{
"serverMode": true,
"sourceDir": ".",
"targetDir": "."
}
The Program compiles and runs without any errors, but the print statement outputs:
false
(false and two empty strings)
I've also tried with json.Unmarshal(..)
but had the same result.
How do I parse the JSON in a way that fills the struct values?
You're not exporting your struct elements. They all begin with a lower case letter.
Make the first letter of your stuct elements upper case to export them. The JSON encoder/decoder wont use struct elements which are not exported.