🐹

JSON 转 Go 结构体

将样例 JSON 转换为带 json tag 的 Go 结构体,支持嵌套对象拆分、数组类型推断与 omitempty 选项。适合对接 RESTful API 写模型层、生成 DAO 与 DTO 定义,Go 后端开发者省去手敲 struct 字段。

0 struct
JSON
Go
type Profile struct {
	Age int `json:"age"`
	City string `json:"city"`
}

type AutoGenerated struct {
	ID int `json:"id"`
	Name string `json:"name"`
	Active bool `json:"active"`
	Score float64 `json:"score"`
	Tags []string `json:"tags"`
	Profile *Profile `json:"profile"`
}

关于 JSON 转 Go 结构体

Go 是强类型语言,对接 JSON 接口时必须先定义匹配的结构体,手写既慢又容易拼错 json tag。本工具在浏览器本地解析样例 JSON,自动生成带 json tag 的 Go 结构体:字段名转为导出的大驼峰,嵌套对象拆分为独立 struct,数组推断为切片类型,并支持 omitempty 选项。数据不上传。 建议在日常开发中收藏本工具,遇到数据格式转换需求时即可快速打开使用。所有转换均在浏览器本地完成,数据不会上传,可放心粘贴敏感内容。

使用场景

  • 对接 REST 接口 — 把接口返回的 JSON 粘进来,立即得到可 Unmarshal 的 Go 结构体。
  • 定义配置结构 — 根据配置文件样例生成 struct,用于加载 YAML/JSON 配置。
  • 编写爬虫/采集器 — 为第三方接口快速建模,省去手写字段的时间。
  • 生成 gRPC/消息体 — 从样例数据反推结构,作为消息或 DTO 定义的起点。
  • 学习 Go 类型映射 — 直观看到 JSON 各类型对应的 Go 类型,辅助学习。

常见问题

字段名是怎么转换的?

按 Go 规范转为导出的大驼峰(首字母大写),并对 Id/URL/API 等常见缩写做大写处理,同时保留原始 json tag。

null 值会推断成什么?

值为 null 时推断为 interface{},因为无法确定具体类型。建议用非空样例获得更精确的类型。

omitempty 有什么用?

开启后会在 json tag 上追加 ,omitempty,序列化时空值字段会被省略,适合可选字段较多的场景。

嵌套对象怎么处理?

每个嵌套对象会生成独立的命名 struct,并在父结构体中以指针引用,结构清晰、可复用。

生成后需要调整吗?

输出是标准 Go 代码,复制后可重命名 struct、调整类型或加注释。整数默认 int、小数默认 float64,可按需改成 int64 等。

有浏览器兼容性要求吗?

本工具兼容所有现代浏览器(Chrome、Firefox、Edge、Safari),无需安装任何插件或扩展。

可以离线使用吗?

首次加载后,部分功能在离线状态下仍可使用。页面资源加载后,核心逻辑完全在浏览器本地运行,不依赖网络。