Go json<->map
今回はGoでJSONとmapの相互変換をやっていきます。
JSON -> map
func JsonToMap(jsonstr string) (map[string]interface{}, error) { mapping := make(map[string]interface{}) err := json.Unmarshal([]byte(jsonstr), &mapping) if err != nil { return mapping, err } return mapping, nil }
json.Unmarshal([]byte(jsonstr), &mapping)でstringをbyteにし、メソッド内で作成したmapの中に代入しています。
map -> JSON
func MapToJson(m map[string]interface{}) (string, error) { bytes, err := json.Marshal(m) if err != nil { return "", err } return string(bytes), nil }
bytes, err := json.Marshal(m)でmapをbyte型に代入しています。
使ってみる
func main() { // json文字列を定義 s := `{ "Name": "mike", "Age": 2 }` m, _ := JsonToMap(s) fmt.Println(m) json, _ := MapToJson(m) fmt.Println(json) }
結果
map[Age:2 Name:mike] {"Age":2,"Name":"mike"}