Golangのjsonでハマる

thumbnail for this post

Go言語(golang)を初めていじりました。
そしていきなりjsonの読み込みでハマったので記録。

もしかしたらGo言語プログラマーにとっては当たり前なのかもしれませんが、json読み込む時のstructの指定ですが、jsonでの名前の最初の文字を大文字にしたものをきちんと指定しないと読み込んでくれません。

型だけ合ってればいいだろと思ってたので少しハマりました。

package main
import (
  "encoding/json"
  "fmt"
)
// 名前がjsonと一致していてかつ最初が大文字じゃないと読めない
type MyDataCorrect struct { //読み込める
	MyData [][]int
}
type MyDataWrong struct{  //読み込めない
	mydata [][]int
}
func main() {
  txt := "{\"mydata\" : [[1,2],[3,4],[5,6]]}"
  bytes := []byte(txt)
  var mydata MyDataCorrect
  var mydata2 MyDataWrong
  if err := json.Unmarshal(bytes, &mydata); err != nil {
    fmt.Println(err)
  }
  if err := json.Unmarshal(bytes, &mydata2); err != nil {
    fmt.Println(err)
  }
  fmt.Println(mydata) // => {[[1 2] [3 4] [5 6]]}
  fmt.Println(mydata2) // => {[]}
}

ダイナミックに中身が変わるような場合に面倒くさそう。。。

投げ銭していただける場合は、amazonで15円からできます。宛先はheisakuあっとcomichi.comで。

マイナスは入れられないの?

comments powered by Disqus