JSON 轉 Go 產生器

JSON 輸入

正在載入編輯器…

生成的 Go

Configuration

輸入 JSON 資料以產生 Go struct

具有正確欄位名稱與 JSON tags 的 struct

如何將 JSON 轉換為 Go – 步驟指南

使用此 JSON 轉 Go 產生器,可從 JSON 範例產生帶 JSON tag 的 Go struct,適合 API 與服務。

  1. 步驟 1 – 貼上 JSON 範例

    • 將具有代表性的 JSON 物件或陣列貼到左側編輯器。
    • 盡量包含巢狀物件、陣列與可為 null 的欄位,方便正確推斷型別。
    • 使用 匯入 從檔案、URL 或示例資料載入 JSON。
  2. 步驟 2 – 選擇 Go struct 選項

    • 設定根 Struct Name(例如 Root)。
    • 決定可選欄位如何處理(*stringomitempty 或自訂型別)。
    • 確認 JSON tag 與命名(例如 json:"createdAt")。
  3. 步驟 3 – 檢查產生的程式碼

    • 確認欄位命名、型別推斷,以及陣列/物件的對應方式是否符合預期。
    • 依需求調整 根型別名稱、null 處理策略與可選的框架選項。
    • 若某些欄位推斷不準確,優化 JSON 範例後重新產生。
  4. 步驟 4 – 在 Go 中使用 struct

    • 將 struct 貼到 package 中並執行 gofmt
    • 使用 encoding/json 將 JSON 反序列化到根 struct。
    • 在 API 邊界加上驗證(例如必填欄位)。
  5. 步驟 5 – 複製或下載

    • 將輸出複製到專案中,或下載成檔案。
    • 執行格式化/程式碼檢查工具,讓風格與專案一致。
    • 若目標語言需要序列化/解析函式庫,請在專案中加入相依套件。

快速提示

  • 需要區分缺失與空值時,優先用指標型別表示可為 null 的欄位。
  • 只有在時間格式穩定時才使用 time.Time
  • 必要時讓 DTO 與領域模型分離,降低耦合。
範例輸出(簡化)
// JSON 輸入
{
  "id": 123,
  "name": "Maeve Winters",
  "email": "[email protected]",
  "active": true,
  "roles": ["admin", "editor"],
  "metadata": { "plan": "pro" },
  "createdAt": "2024-03-01T10:15:00Z",
  "score": 99.5,
  "notes": null
}

// 產生的 Go struct(簡化)
type Metadata struct {
  Plan string `json:"plan"`
}

type Root struct {
  ID        int       `json:"id"`
  Name      string    `json:"name"`
  Email     *string   `json:"email"`
  Active    bool      `json:"active"`
  Roles     []string  `json:"roles"`
  Metadata  Metadata  `json:"metadata"`
  CreatedAt string    `json:"createdAt"`
  Score     float64   `json:"score"`
  Notes     any       `json:"notes"`
}

相關 JSON 與 Go 工具

探索更多可與本 JSON 轉 Go 產生器搭配使用的 JSON 與 Schema 工具。

常見問題

支援哪些 Go 特性?

產生器會建立 Go struct,包含適當欄位名稱、JSON tags(marshaling/unmarshaling),並使用符合 Go 命名慣例的資料型別。

JSON tags 如何處理?

產生器會自動在 struct 欄位加上 JSON tags 以便序列化。你也可以按需啟用 YAML 或 XML tags,支援多格式輸出。

可以自訂 package 名稱嗎?

可以!你可在選項中指定任意 package 名稱。預設為「main」,也可使用「models」「types」等。

Go 的命名慣例如何處理?

產生器會將 JSON 欄位名稱自動轉換成合適的 Go 欄位名稱(匯出欄位用 PascalCase),並在 JSON tags 中保留原始名稱。

JSON 轉 Go 產生器 | JSONSwiss