Go言語でJSON

前回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で実行している。