天パのtech備忘録

プログラミング関係の記事を書いていきます!

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"}