[Go] JSONをUnmarshalした場合の型
JSON文字列をパースして扱う必要があった。
事前に受け取る際のラベルや値の型が決まっていれば、それにあわせたstructを作って収めればいいと思う。
今回は、事前にラベルも入ってくる値の型も決まっていないため、map[string]interface{}に収めることにした。
ラベルの方はstringで問題ないが、値の方の型が気になったので調べてみた結果。
package main
import (
"encoding/json"
"fmt"
)
func main() {
s := `{
"a":12345,
"b":12345.678,
"c":"12345",
"d":true,
"e":null
}`
m := make(map[string]interface{})
json.Unmarshal([]byte(s), &m)
for k, v := range m {
fmt.Printf("key=%s, type=%T, value=%v\n", k, v, v)
}
}
結果はこんな感じだった。取り扱う際は型でスイッチして使う感じなのかな。
key=c, type=string, value=12345
key=d, type=bool, value=true
key=e, type=<nil>, value=<nil>
key=a, type=float64, value=12345
key=b, type=float64, value=12345.678
この記事が気に入ったらサポートをしてみませんか?