エンジニア日記

日々の開発あれこれ

GoでJSONファイルを読み込み内容を構造体に詰め込むときにはまったのでメモ

jsonファイル

1
2
3
4
5
cat config.json 
{
    "consumer_key":"hogehogehoge"
  , "consumer_secret":"fugafugafuga"
}

ソースコード

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
package main

// モジュール読み込み
import(
    "encoding/json"
    "fmt"
    "io/ioutil"
)

// 構造体を宣言
type Config struct{
    consumer_key string `json:"consumer_key"`
    consumer_secret string `json:"consumer_secret"`
}

func main(){

    // jsonファイルを読み込み
    file, err := ioutil.ReadFile(config.json)
    if err != nil {
        panic(err)
    }
    var config Config
    json.Unmarshal(file, &config)

    // jsonファイルの中身を表示
    fmt.Println(config.consumer_key)
    fmt.Println(config.consumer_secret)
}

結果

1
2
3
./json 


表示されない。。。

構造体の変数を変更してみる

1
2
3
4
5
6
7
8
9
10
11
12
type Config struct{
    ConsumerKey string `json:"consumer_key"`
    ConsumerSecret string `json:"consumer_secret"`
}

fmt.Println(config.ConsumerKey)
fmt.Println(config.ConsumerSecret)

// 表示された
./json 
hogehogehoge
fugafugafuga
1
2
3
4
5
6
7
8
9
10
11
12
type Config struct{
    consumerKey string `json:"consumer_key"`
    consumerSecret string `json:"consumer_secret"`
}

fmt.Println(config.consumerKey)
fmt.Println(config.consumerSecret)

// 表示されない。。
./json 


う〜ん、
構造体の変数の先頭は大文字じゃないといけないのかな・・・?