よしなにJSONをパース
Goは静的型付け言語であるため、JSONを利用するにも型を宣言しなければならない。
自らが作成したアプリケーションが返すJSONならば良いのだが、
頻繁に変更されるような外部のAPIや巨大JSONの型を都度宣言し直すのは嬉しくない。
そこで、型を宣言せずともJSONから値を取れるライブラリの紹介。
jsonparser
mkdir app/day6/ && touch app/day6/main.go
package main
import (
"fmt"
"github.com/buger/jsonparser"
)
func main() {
var jsonStr =`
{
"name": "山田太郎",
"age": 30,
"isStudent": false,
"address": {
"street": "桜通り1-2-3",
"city": "東京",
"zip": "100-0001"
},
"hobbies": ["読書", "映画鑑賞", "旅行"]
}`
name, err := jsonparser.GetString([]byte(jsonStr), "name")
if err != nil {
return
}
fmt.Println(name)
age, err := jsonparser.GetInt([]byte(jsonStr), "age")
if err != nil {
return
}
fmt.Println(age)
_, err = jsonparser.ArrayEach([]byte(jsonStr), func(value []byte, dataType jsonparser.ValueType, offset int, err error) {
fmt.Println(string(value))
}, "hobbies")
if err != nil {
return
}
}
都度エラーを評価しなくては行けないのが、若干面倒ですが、よしなにJSONをパースすることができました。
スクレイピングなどで役に立ちそうです。