Lapis Lazuli

technical blog for web developer

【Go】jsonを扱う

今回はJSONの扱いについて。

大体どの言語にもJSONを扱う関数があるのですが、Goにもちゃんと標準パッケージ内にあります。
まずはパッケージをインポートしておきましょう。

import (
    "encoding/json"
)

デコード

jsonのデコードは超簡単

json.Unmarshal([]byte, interface{})

の2つの引数を渡せばいいだけです。
第1引数にデコードしたいJSONデータ、第2引数にデコードしたデータを入れる構造体を渡します。

これだけです。あとはエラーハンドリングなどいつもの処理をいれてお好きにどうぞって感じ。

なんて簡単。超イージー

エンコード

お気づきの方もいるかもしれませんが、エンコードはunmarshalのunを取るだけですw

json.Marshal(interface{})

これで構造体の定義のままJSON化してくれます。
keyの部分もデフォルトでは構造体の変数名でやってくれますが、これはメタ情報を追加すれば好きに変えられます。
僕は変数名と同じkeyでも毎回定義してます。そっちのほうが確実ですしね。

type User struct {
    Id       int    `json:"id"`
    Name     string `json:"name"`
    Mail string `json:"mail"`
}

上記のように書きます。
気をつけたいのは定義している型くらいでしょうか。IntとStringでJSONの形式もそれに合わせられる感じです。

この2つを覚えておけば普段は困ることはないと思います。
じゃんじゃん使っていきましょう。