基本的なJSONからGo構造体への変換
シンプルなフラットJSONオブジェクトをエクスポートされたフィールドとjsonタグを持つGo構造体に変換する方法を学びます。Go初心者に最適です。
Basic Structs
詳細な説明
シンプルなJSONオブジェクトからGo構造体への変換
文字列、数値、真偽値フィールドを持つフラットなJSONオブジェクトの場合、Go構造体への変換は簡単です。各JSONキーは json 構造体タグを持つエクスポートされたGoフィールドになります。
JSONの例
{
"id": 42,
"name": "Alice",
"email": "alice@example.com",
"active": true
}
生成されるGo構造体
type AutoGenerated struct {
ID int `json:"id"`
Name string `json:"name"`
Email string `json:"email"`
Active bool `json:"active"`
}
主な変換ルール
- フィールド名はエクスポートされる — GoではJSONのマーシャリング・アンマーシャリングが機能するために、フィールドは大文字で始まる必要があります。
"name"はNameに、"id"はIDになります。 - jsonタグは元のキーを保持する —
json:"name"タグにより、Goのencoding/jsonパッケージがどのJSONキーがどの構造体フィールドに対応するかを認識します。 - 型推論 — JSON文字列は
stringに、小数点なしのJSON数値はint(大きな値はint64)に、小数点ありの数値はfloat64に、真偽値はboolにマッピングされます。
マーシャリングとアンマーシャリング
構造体が定義されると、json.Unmarshal でJSONをデコードできます:
var user AutoGenerated
err := json.Unmarshal([]byte(jsonData), &user)
json.Marshal でエンコードも可能です:
data, err := json.Marshal(user)
これがすべてのJSON-to-Go変換の基礎です。ネストされたオブジェクトや配列など、より複雑な構造に進む前に、このパターンを理解することが不可欠です。
ユースケース
GoでREST APIのクライアントやサーバーを構築する際、ユーザープロファイル、設定エントリ、ステータスレスポンスなどのシンプルなJSONペイロードを頻繁に受け取ります。これらを構造体に変換することで、型安全性とIDEの自動補完が得られます。