J'essaie de configurer mon programme Go en créant un fichier JSON et en l'analysant dans une structure:
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
}
Le fichier config.json:
{
"serverMode": true,
"sourceDir": ".",
"targetDir": "."
}
Le programme se compile et s'exécute sans aucune erreur, mais l'instruction d'impression affiche:
false
(faux et deux chaînes vides)
J'ai également essayé avec json.Unmarshal(..)
mais j'ai eu le même résultat.
Comment analyser le JSON d'une manière qui remplit les valeurs de structure?
Vous n'exportez pas vos éléments de structure. Ils commencent tous par une lettre minuscule.
var settings struct {
ServerMode bool `json:"serverMode"`
SourceDir string `json:"sourceDir"`
TargetDir string `json:"targetDir"`
}
Faites la première lettre de vos éléments de structure en majuscule pour les exporter. L'encodeur/décodeur JSON n'utilisera pas d'éléments struct qui ne sont pas exportés.