背景
Go言語を触っていると、よく構造体をJSONに変換するために以下のように Marshal という関数を使いますよね。何気なく使っていていましたが、Marshal の意味とは何か知りたくなったので調べてみました。
json.Marshal使用例
type Person struct {
Name string `json:"name"`
Age int `json:"age"`
}
func main() {
p := Person{
Name: "hoge",
Age: 30,
}
s, err := json.Marshal(p)
if err != nil {
panic(err)
}
fmt.Println(string(s))
}
Marshaling とは
まずはWikipediaからの情報です。
In computer science, marshalling or marshaling (US spelling) is the process of transforming the memory representation of an object into a data format suitable for storage or transmission.
Google翻訳をかけると、Marshalingとは、
オブジェクトのメモリ表現をストレージまたは送信に適したデータ形式に変換するプロセスです。
上記のプログラム例で言うと、
「オブジェクトのメモリ表現」が Person構造体であるp
「送信に適したデータ形式」が JSON形式
ということになります。
結論
Marshal とは、JSON形式に変換することではなく、あくまでも「オブジェクトのメモリ表現を送信に適したデータ形式に変換する」ということです。
参考