[Go] JSON ファイルを読み込む

作成日: 2018年03月07日

パッケージ encoding/jsonjson.Unmarshal 関数を使用すると、任意の構造体に割り当てることができます。

package main

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

type JsonContent struct {
    Users []User `json:"users"`
}

type User struct {
    Name string `json:"name"`
    Age  int    `json:"age"`
}

func main() {
    f, err := ioutil.ReadFile("./sample.json")
    if err != nil {
        panic(err.Error())
    }

    jsonContent := &JsonContent{}
    err = json.Unmarshal(f, &jsonContent)
    if err != nil {
        panic(err.Error())
    }

    fmt.Printf("%#v", jsonContent)
}

sample.json の中身は下記です。

{
  "users": [
    {
      "name": "Tom",
      "age": 15
    },
    {
      "name": "Bob",
      "age": 30
    }
  ]
}

実行結果は下記となります。

&main.JsonContent{Users:[]main.User{main.User{Name:"Tom", Age:15}, main.User{Name:"Bob", Age:30}}}

説明

  • ioutil.ReadFile でファイルを読み込みます。
  • json.Unmarshal で第 2 引数に渡した構造体に割り当てます。
Go