Go言語のAPIレスポンスを構造体にマッピングする方法を完全ガイド!初心者でもわかるデータ受け取り
生徒
「Go言語でインターネットのデータを使うとき、そのまま文字だと読みにくくないですか?」
先生
「その通りです。だからGo言語では構造体という箱に、APIレスポンスを整理して入れます。」
生徒
「箱に入れるってどういうことですか?」
先生
「名前や住所を書いた申込用紙を、項目ごとに分けて管理するイメージで説明しますね。」
1. APIレスポンスとは何か
APIレスポンスとは、外部サービスから返ってくる返事のことです。Go言語でAPI連携を行うと、多くの場合JSON形式という文字のかたまりでデータが返ってきます。JSONは住所録のようなもので、項目名と内容がセットになっています。そのままでは扱いにくいため、Go言語では中身を整理して使います。
2. 構造体とはデータを整理する箱
構造体とは、関連するデータをまとめて入れるための箱です。名前、年齢、メールアドレスなど、バラバラの情報を一つにまとめられます。紙の申込書に名前欄や住所欄があるように、Go言語でも項目を決めてデータを管理します。
type User struct {
Name string
Age int
Email string
}
3. JSONと構造体を結びつける仕組み
APIレスポンスのJSONと構造体を結びつけるときは、jsonタグを使います。これは「この項目はこの名前のデータですよ」と教える目印です。荷物に貼るラベルのような役割を持っています。
type User struct {
Name string `json:"name"`
Age int `json:"age"`
Email string `json:"email"`
}
4. APIレスポンスを構造体に変換する流れ
Go言語では、JSONを構造体に変換することをデコードと呼びます。これは文字で書かれた情報を、整理された箱に入れ直す作業です。encoding/jsonパッケージを使うと簡単に行えます。
var user User
err := json.Unmarshal(body, &user)
if err != nil {
fmt.Println("変換に失敗しました")
return
}
5. 構造体に変換すると何が便利か
構造体にマッピングすると、データを名前で直接扱えます。配列の何番目かを数える必要がなくなり、初心者でも読みやすいコードになります。Go言語でのAPI連携では、この形が基本になります。
fmt.Println(user.Name)
fmt.Println(user.Age)
6. よくあるミスと注意点
JSONの項目名と構造体のタグ名が違うと、データは入りません。また、数字なのに文字として定義すると失敗します。箱のサイズが合わないと物が入らないのと同じです。APIレスポンスの形をよく確認することが大切です。
7. 初心者が意識したいAPIマッピングの考え方
最初は全てを完璧に理解しなくても問題ありません。APIレスポンスを紙に書き出し、どの項目をどの箱に入れるか考えるだけで十分です。Go言語の構造体マッピングは、慣れるほど便利さが実感できます。