なぜか苦戦したのでメモしておく。
https://gobyexample.com/json
↑
ここに書いてある。
上記から抜粋したのが以下。
json.Unmarshal() の第一引数が []byte になっているので、string の場合は変換してあげる必要がある。
var dat map[string]interface{} if err := json.Unmarshal(byt, &dat); err != nil { panic(err) } fmt.Println(dat) num := dat["num"].(float64) fmt.Println(num)
で、dat にJSON文字列の値が入ってくる。
ただ、dat の value 部分は interface{} なので、
利用する際は以下のように type assertion を利用して、目的の型に変換する必要がある。
num := dat["num"].(float64)
仮にJSON文字列のvalueにstringしか入ってこない場合は以下のように
interface{} を string にできる。
var dat map[string]string
string の代わりに int が入ってきた場合は json.Unmarshal() で以下のエラーがでる。
json: cannot unmarshal number into Go value of type string