JSONとは、JavaScript Object Notationの略で、テキストベースのデータフォーマットだ。

***.jsonという形でデータファイルになる。秘密鍵などのデータを保存しておきたい時の設定ファイルとして使うことが多い。

今回は、~/workspace/json/sample.jsonを作成し、下記の情報を入力する。

{
  "id":1,
  "name":"usako",
  "reading":"usano"
}

lsonファイルは、{ “項目”:値... }という形で記述する。


次に同階層にmain.goを作成する。

package main

import (
	"encoding/json"
	"fmt"
	"io/ioutil"
	"log"
)

//jsonのデータ用の設計図
type Sample struct {
	Id      int    `json:"id"`
	Name    string `json:"name"`
	Reading string `json:"reading"`
}


func main() {
	//sample.jsonをよみこんでbyteで取得する
	bytes, err := ioutil.ReadFile("sample.json")
	if err != nil {
		log.Fatal(err)
	}
	//Sample構造体を持つ初期値がない変数sampleを作る。
	var sample Sample
	//jsonのデコードされたものを人の読める形にして変数sampleに入れる
	err = json.Unmarshal(bytes, &sample)
	fmt.Println(sample.Name)
}

Sample構造体のNameを指定するとusakoと表示される。

jsonファイルのデータをmain.goで呼び出す場合は、構造体を使って、フィールドにjsonファイルの各データを入れていく。

Go言語の場合は、byte型を文字列に変換する際は、string()とすればよいのだが、jsonファイルから読み込んだものを文字列に変換する場合は、json.Unmarshalを使う。

jsonのデータを格納した変数sampleは構造体になっているので、取得したいものをsample.フィールド名で指定する。