Goことはじめ(JSONの取り扱い)
http://gihyo.jp/dev/feature/01/go_4beginners/0004 より学んだことメモ
package main import ( "fmt" "log" "encoding/json" ) // // 構造体にタグをつけることでJSON変換時の // ルールを定義することができる // 何も指定しない場合はpublicなフィールドだけ格納される // type Person struct { ID int `json:"id"` // id という名前で格納する Name string `json:"name"` Email string `json:"-"` // JSONに格納しない Age int `json:"age"` Address string `json:"address,omitempty"` // ,omitemptyで値が空なら無視 memo string } // JSONへの変換 func JsonStringifyFunc() { fmt.Println("構造体からJSONへの変換 ---------- ") person := &Person { ID: 1, Name: "Gopher", Email: "gopher@example.org", Age: 5, Address: "", memo: "golang lover", } // 構造体にデータを代入して // ポインタを渡すだけで、 // デフォルトフォーマットでJSON文字列の[]byteを生成できる b, err := json.Marshal(person) if err != nil { log.Fatal(err) } fmt.Println(string(b)) // 文字列に変換 // -> {"id":1,"name":"Gopher","age":5} } // JSONから構造体への変換 func JsonParseFunc() { fmt.Println("JSONから構造体への変換 ---------- ") var person Person b := []byte(`{"id":1,"name":"Hogeo","age":10}`) err := json.Unmarshal(b, &person) if err != nil { log.Fatal(err) } fmt.Println(person) } func main() { JsonStringifyFunc() JsonParseFunc() }