Golangで配列のJSONを構造体の配列に変換する


Golangで構造体をJSONファイルとして出力する方法です。 このコードではローカルのJSONファイルを読みとり、構造体の配列に変換しています。

main.go

package main

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

type Pokemon struct {
	Id   int    `json:"id"`
	Name string `json:"name"`
}

func main() {
	// pokemons.json を読み込む
	pokemonsJsonFile, err := os.Open("pokemons.json")

	// pokemons.json の読み込みに失敗した場合
	if err != nil {
		log.Fatal(err)
	}

	// defer で pokemonsJsonFile を閉じる
	defer pokemonsJsonFile.Close()

	// pokemonsJsonFile を読み込みパースする
	pokemonsByteValue, _ := ioutil.ReadAll(pokemonsJsonFile)
	var pokemons []Pokemon
	json.Unmarshal(pokemonsByteValue, &pokemons)

	fmt.Println(pokemons)	// [{132 Ditto} {133 Eevee} {143 Snorlax}]
}

pokemons.json

[
  {
    "id":132,
    "name":"Ditto"
  },
  {
    "id":133,
    "name":"Eevee"
  },
  {
    "id":143,
    "name":"Snorlax"
  }
]