Go 解码JSON以映射[string]映射[string]字符串

Go 解码JSON以映射[string]映射[string]字符串,go,Go,我有一个map[string]map[string]string,我希望能够将其转换为JSON并写入文件,并且能够从文件中读回数据 我已经能够使用以下命令成功写入文件: func (l *Locker) Save(filename string) error { file, err := os.Create(filename) if err != nil { return err } defer file.Close() encoder

我有一个
map[string]map[string]string
,我希望能够将其转换为JSON并写入文件,并且能够从文件中读回数据

我已经能够使用以下命令成功写入文件:

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)
}
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加载回映射。我尝试了以下方法:

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)
}
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.Unmarshal()
,则可以向其传递数据结构以进行填充。这是下面代码的链接,在中


谢谢在完成了您的示例并仔细查看了我的代码之后,我意识到我需要传递一个指向json.Decode的指针,但事实并非如此。