How Do I Parse a JSON file into a struct with Go
30,974
You're not exporting your struct elements. They all begin with a lower case letter.
var settings struct {
ServerMode bool `json:"serverMode"`
SourceDir string `json:"sourceDir"`
TargetDir string `json:"targetDir"`
}
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.
Author by
Charles
Updated on July 22, 2022Comments
-
Charles almost 2 years
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?