# JSON 转 Go Struct

将 JSON 数据转换为 Go struct 定义，包含 json 标签、导出的 PascalCase 字段和嵌套类型推断

> 标准页面: https://elysiatools.com/zh/tools/json-to-go

- **分类:** Development

- **关键词:** json, go, golang, struct, 转换, json标签, 后端

## 概述

本工具可以将 JSON 数据快速转换为 Go 语言的 Struct 结构体定义。它支持自动推断嵌套类型、生成符合 Go 规范的 PascalCase 导出字段，并自动附加带 omitempty 选项的 json 标签，帮助后端开发者快速完成数据模型的定义。

## 输入项

- **JSON 输入** (textarea): { "name": "Alice", "age": 30, "roles": \["admin", "user"\], "address": { "city": "Shanghai", "zip": "200000" } }
- **根类型名称** (text): Root
- **省略空字段** (checkbox)

## 适用场景

- 在 Go 语言项目中对接第三方 API，需要根据返回的 JSON 响应快速创建对应的数据结构时。
- 编写 Web 服务路由处理器，需要定义用于解析前端请求体（Request Body）的 Go 结构体时。
- 重构旧系统或迁移数据，需要将现有的 JSON 配置文件或数据样本转换为 Go 强类型定义时。

## 工作原理

- 在输入框中粘贴或输入需要转换的原始 JSON 数据。
- 设置自定义的根结构体名称（默认为 Root），并选择是否开启“省略空字段”以在 json 标签中添加 omitempty。
- 工具解析 JSON 结构，自动将键名转换为 PascalCase 格式，推断字段的数据类型（如 string、int、slice 或嵌套 struct）。
- 实时生成符合 Go 语法规范的 Struct 代码，您可以直接复制并粘贴到 Go 源文件中。

## 使用案例

- 快速对接外部 RESTful API，将 API 响应 JSON 转换为 Go 结构体以进行反序列化。
- 根据前端提交的 JSON Payload 快速生成后端接收参数的 Binding Struct。
- 将复杂的 JSON 配置文件转换为 Go 结构体，便于在代码中进行强类型读取。

## 常见问题

### 这个转换器支持嵌套的 JSON 对象吗？

支持。工具会自动解析嵌套的 JSON 对象并将其提取为独立的子结构体或内联结构体。

### 什么是“省略空字段”选项？

开启该选项后，生成的 Go struct 字段标签会包含 omitempty，在序列化为 JSON 时若字段为空值则会被忽略。

### 转换器如何处理 JSON 中的数组？

工具会分析数组中的元素类型，自动将其转换为 Go 的切片类型（例如 []string 或 []StructName）。

### 如果 JSON 键名包含下划线，生成的 Go 字段会怎样？

工具会自动将下划线命名（snake_case）转换为 Go 语言推荐的驼峰命名（PascalCase）作为字段名，同时保留原键名在 json 标签中。

### 转换过程是在服务器端进行的吗？

不是。转换完全在您的浏览器本地运行，您的 JSON 数据不会被上传到任何服务器，确保数据安全。

## 相关工具

- [Data URI 生成器](https://elysiatools.com/zh/tools/data-uri-generator): 将文件转换为 Data URI（Base64 或百分号编码），用于直接在 HTML、CSS 或 Markdown 中内联图片、字体等资源
- [JSON Schema 转 Zod Schema 转换器](https://elysiatools.com/zh/tools/json-schema-to-zod-schema-converter): 将标准 JSON Schema 的 JSON/YAML 定义转换为可直接在 TypeScript 项目中使用的 Zod 运行时校验代码，支持嵌套结构、数组、枚举和常见校验规则
- [JSON 转 C# 类](https://elysiatools.com/zh/tools/json-to-csharp): 将 JSON 数据转换为 C# class，包含 PascalCase 属性、JsonPropertyName 特性与嵌套类型推断
- [JSON 转 Java 类](https://elysiatools.com/zh/tools/json-to-java): 将 JSON 数据转换为 Java class，含 Jackson @JsonProperty 注解、私有字段及 getter/setter
- [JSON 转 Kotlin Data Class](https://elysiatools.com/zh/tools/json-to-kotlin): 将 JSON 数据转换为 Kotlin data class，含 @SerializedName 注解、可空处理与嵌套类型推断
- [JSON 转 Rust Struct](https://elysiatools.com/zh/tools/json-to-rust): 将 JSON 数据转换为 Rust struct，含 serde Serialize/Deserialize 派生、snake_case 字段与 serde rename 属性
- [JSON 转 TypeScript](https://elysiatools.com/zh/tools/json-to-typescript): 将 JSON 数据转换为 TypeScript interface 或 type，支持联合类型、可选字段与嵌套对象推断
- [日志转时序图转换器](https://elysiatools.com/zh/tools/log-sequence-diagram-converter): 把结构化服务日志转换成 Mermaid 或 PlantUML 时序图，并可叠加延迟和错误标注

## 示例

- [Terraform Plan JSON 样本](https://elysiatools.com/zh/samples/terraform-plan-json-samples): 用于依赖可视化和变更审查的 Terraform plan JSON 文件样本，贴近 terraform show -json 输出结构
- [聊天记录 JSON 示例](https://elysiatools.com/zh/samples/chat-transcript-json): 多角色聊天记录的 JSON 示例
- [JSON 示例](https://elysiatools.com/zh/samples/json): JSON（JavaScript 对象表示法）格式示例，从简单到复杂结构
- [富媒体 JSON 示例](https://elysiatools.com/zh/samples/rich-media-json): 常见富文本编辑器（TipTap、Quill、Slate）的 JSON 示例

## 相关内容

- [JSON 到强类型代码生成器](https://elysiatools.com/zh/hubs/json-to-typed-code-generators): 从 JSON 或 schema 证据生成 TypeScript、Go、Rust、Kotlin、Java、C# 与 Zod 校验模型。
