package main
import (
"encoding/json"
"fmt"
)
type Student struct {
Id int
Name string
}
func main() {
var jsonBlob = []byte(`[
{Id: 1, "Name": "alice"},
{Id: 2, "Name": "bob"}
]`)
// JSONの返り値を受け取る変数を定義
var students []Student
// Unmarshalizeしてstudentsにセット
err := json.Unmarshal(jsonBlob, &students)
if err != nil {
fmt.Println("error:", err)
}
fmt.Printf("%+v", students[0])
fmt.Println(students[0].Name)
}
package main
import (
"bytes"
"encoding/json"
"fmt"
)
type Country struct {
Name string `json:"name"`
Prefectures []Prefecture `json:"prefectures"`
}
type Prefecture struct {
Name string `json:"name"`
Capital string `json:"capital"`
Population int `json:"population"`
}
func main() {
tokyo := Prefecture{Name: "東京都", Capital: "東京", Population: 1234}
osaka := Prefecture{Name: "大阪府", Capital: "大阪市", Population: 2345}
kyoto := Prefecture{Name: "京都府", Capital: "京都市", Population: 3456}
japan := Country{Name: "日本", Prefectures: []Prefecture{tokyo, osaka, kyoto}}
// ここでマーシャライズ
jsonBytes, err := json.Marshal(japan)
if err != nil {
fmt.Println("JSON Marshal error:", err)
return
}
// ByteBufferを作成し、書き込む
out := new(bytes.Buffer)
json.Indent(out, jsonBytes, "", " ")
fmt.Println(out.String())
}