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的指针,但事实并非如此。