J'ai un map[string]map[string]string
que j'aimerais convertir en JSON et écrire dans un fichier, et pouvoir lire les données depuis le fichier.Décoder JSON à la carte [chaîne] carte [chaîne] chaîne
Je suis capable d'écrire avec succès au fichier en utilisant les éléments suivants:
func (l *Locker) Save(filename string) error {
file, err := os.Create(filename)
if err != nil {
return err
}
defer file.Close()
encoder := json.NewEncoder(file)
// l.data is of type map[string]map[string]string
return encoder.Encode(l.data)
}
Je ne parviens pas à charger le JSON retour dans la carte. Je l'ai essayé ce qui suit:
func (l *Locker) Load(filename string) error {
file, err := os.Open(filename)
if err != nil {
return err
}
defer file.Close()
decoder := json.NewDecoder(file)
return decoder.Decode(l.data)
}
chargement d'un fichier JSON avec le contenu {"bar":{"hello":"world"},"foo":{"bar":"new","baz":"extra"}}
, et après ce qui précède le contenu de l.data
est juste map[]
. Comment puis-je décoder avec succès ce JSON en l.data
?
merci! Après avoir travaillé sur votre exemple et avoir regardé mon code, j'ai réalisé que je devais passer un pointeur vers json.Decode mais ce n'était pas le cas. – mfonda