JSON 转 Go 生成器

JSON 输入

正在加载编辑器…

生成的 Go

Configuration

输入 JSON 数据以生成 Go 结构体

具有适当字段名和 JSON 标签的结构体

如何将 JSON 转换为 Go – 分步指南

使用此 JSON 转 Go 生成器,可从 JSON 示例生成带 JSON tag 的 Go 结构体,适用于 API 与服务端。

  1. 步骤 1 – 粘贴 JSON 示例

    • 将具有代表性的 JSON 对象或数组粘贴到左侧编辑器中。
    • 尽量包含嵌套对象、数组和可为 null 的字段,方便正确推断类型。
    • 使用 导入 从文件、URL 或示例数据加载 JSON。
  2. 步骤 2 – 选择 Go 结构体选项

    • 设置根 结构体名称(例如 Root)。
    • 决定可选字段如何处理(*stringomitempty 或自定义类型)。
    • 确认 JSON tag 与命名(例如 json:"createdAt")。
  3. 步骤 3 – 检查生成的代码

    • 确认字段命名、类型推断,以及数组/对象的映射方式是否符合预期。
    • 根据需要调整 根类型名称、空值处理策略以及可选的框架选项。
    • 如果某些字段推断不准确,优化示例 JSON 后重新生成。
  4. 步骤 4 – 在 Go 中使用结构体

    • 将结构体粘贴到包中并运行 gofmt
    • 使用 encoding/json 将 JSON 反序列化为根结构体。
    • 在 API 边界添加校验(例如必填字段)。
  5. 步骤 5 – 复制或下载

    • 将输出复制到项目中,或下载为文件。
    • 运行格式化/代码检查工具,让代码风格与项目保持一致。
    • 若目标语言需要序列化/解析库,请在项目中添加相应依赖。

快速提示

  • 需要区分缺失与空值时,优先用指针类型表示可空字段。
  • 只有在时间格式稳定时才使用 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 结构体(简化)
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 特性?

生成器创建具有适当字段名、用于编组/解组的 JSON 标签以及遵循 Go 命名约定的适当 Go 数据类型的 Go 结构体。

JSON 标签如何处理?

生成器会自动为结构体字段添加 JSON 标签以进行正确的序列化。如果需要多格式支持,您还可以启用 YAML 或 XML 标签。

我可以自定义包名吗?

可以!您可以在选项中指定任何包名。默认是 'main',但您可以使用自己的包名,如 'models'、'types' 等。

Go 命名约定如何处理?

生成器会自动将 JSON 字段名转换为正确的 Go 字段名(导出字段为 PascalCase),同时在 JSON 标签中保留原始名称。

JSON 转 Go 生成器 | JSONSwiss