基本的な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"`
}

主な変換ルール

  1. フィールド名はエクスポートされる — GoではJSONのマーシャリング・アンマーシャリングが機能するために、フィールドは大文字で始まる必要があります。"name"Name に、"id"ID になります。
  2. jsonタグは元のキーを保持するjson:"name" タグにより、Goの encoding/json パッケージがどのJSONキーがどの構造体フィールドに対応するかを認識します。
  3. 型推論 — 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の自動補完が得られます。

試してみる — JSON to Go Struct Converter

フルツールを開く