前回JSONから、秘密鍵などが入ったデータファイルをmain.goで読み込んだ。
今回は、複数のデータの場合、どう呼び出すか試してみる。
まず、sample.jsonに下記のコードを入力する。
[ { "id" : 1, "name" : "usako", "reading" : "usano" }, { "id" : 2, "name" : "kumata", "reading" : "kumano" } ]
JSONファイルでは、複数のデータを扱う場合は、[ ]で配列とする。その次に配列の1番目を{ }で囲う。”キー”:要素で、入力するが、最後の行は、” , ”をつけないように注意する。
main.goでは、下記のように入力する。
package main import ( "encoding/json" "fmt" "io/ioutil" "log" ) //設計図を作る type Sample struct { Id int `json:"id"` Name string `json:"name"` Reading string `json:"reading"` } //sample.jsonをよみこんでbyteで取得する func main() { bytes, err := ioutil.ReadFile("sample.json") if err != nil { log.Fatal(err) } //Sample構造体を持つ初期値がない変数sample作る。 var samples []Sample //jsonのデコードされたものを人の読める形にして変数sampleに入れる err = json.Unmarshal(bytes, &samples) fmt.Println(samples[1].Name) }
kumata
今回、前回と異なるのは、var samples []Sampleの部分。JSONが配列となっている場合は、構造体の型指定Sampleの前に[]をつける。
最後にfmt.Printlnで呼び出す場合は、配列の指定をする。各キーに対する値を呼び出したい場合は、配列指定[]の後に".キー"を付ける。
※JSONファイルの場合、なぜかAtomでは実行できなかったので、MING64で実行している。