У меня есть map[string]map[string]string
, что я хотел бы иметь возможность конвертировать в JSON и записывать в файл и иметь возможность считывать данные из файла.Декодирование JSON для отображения [string] map [string] string
Я был в состоянии успешно выполнить запись в файл, используя следующие:
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)
}
У меня возникли проблемы с загрузкой в JSON обратно на карту. Я попытался следующие:
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)
}
загрузки в формате JSON файл с содержимым {"bar":{"hello":"world"},"foo":{"bar":"new","baz":"extra"}}
, и после того, как выше содержание l.data
просто map[]
. Как я могу успешно декодировать этот JSON в l.data
?
спасибо! После работы с вашим примером и взглядом на мой код, я понял, что мне нужно передать указатель на json.Decode, но это не так. – mfonda