在存储的时候想把数据列表存储成json string,但是在代码使用的时候又觉得用map更快更方便。这个时候就需要相互转换,下面是一个转换的例子。
// Test for json and map converting
package main
import (
"encoding/json"
"fmt"
)
func main() {
jsonStr := `{"ip": "127.0.0.1", "device": "ABESSF0023"}`
// test json string to map
m, err := JsonToMap(jsonStr)
if err != nil {
fmt.Printf("Convert json to map failed with error: %+v\n", err)
}
fmt.Printf("Converted to map result: %+v\n", m)
// test map to json string
jsonRes, err := MapToJson(m)
if err != nil {
fmt.Printf("Convert json to map failed with error: %+v\n", err)
}
fmt.Printf("Convert to json string result: %+v\n", jsonRes)
}
// Convert json string to map
func JsonToMap(jsonStr string) (map[string]string, error) {
m := make(map[string]string)
err := json.Unmarshal([]byte(jsonStr), &m)
if err != nil {
fmt.Printf("Unmarshal with error: %+v\n", err)
return nil, err
}
for k, v := range m {
fmt.Printf("%v: %v\n", k, v)
}
return m, nil
}
// Convert map json string
func MapToJson(m map[string]string) (string, error) {
jsonByte, err := json.Marshal(m)
if err != nil {
fmt.Printf("Marshal with error: %+v\n", err)
return "", nil
}
return string(jsonByte), nil
}