JSON 转 Go Struct
从样例推断嵌套 Go Struct、JSON Tag、Slice、指针与可选字段
JSON 与数据
🔒 100% 本地运行 — 你的数据不会离开当前页面由 ToolsKit 编辑团队维护•最近更新:2026年8月23日•最近复核:2026年8月23日
JSON → Go structs
字段可选性根据对象数组中的缺失值和 null 推断;混合类型会降级为通用类型,生成后仍需按真实 API 契约复核。
Go structs
生成的 Go structs 会显示在这里。
工具说明
JSON 转 Go Struct 会从一个 JSON 对象或非空对象样例数组推断命名 Go 模型。嵌套对象生成独立 Struct,数组生成 Slice,整数样例使用 int64,小数使用 float64,混合类型降级为 any。输入多个对象时,只要字段在任一样例中缺失或为 null,就会视为可选;可选标量和对象可使用指针,json Tag 可添加 omitempty。生成器会清理标识符,并给规范化后重名字段添加后缀。推断无法自动知道 time.Time、自定义数字位宽、Enum、校验规则或领域接口,因此应在目标 Module 中编译并复核。
场景配方
01
从 API 响应样例起草 Struct
目标:保留多条记录中观察到的可选性并快速得到可复核起点
- 把多条代表性响应对象作为一个 JSON 数组粘贴。
- 设置领域根类型名,并决定可选字段是否使用指针和 omitempty。
- 生成后把通用类型和字符串替换为领域 Enum、时间与已校验自定义类型,再编译。
结果:得到反映已观察字段、同时保留契约决策空间的嵌套 Go 模型。
常见问题
可以从对象数组推断可选字段吗?
可以,只要某个 Key 在任一样例中缺失或为 null,就会视为可选。
什么时候生成指针?
开启选项后,可选标量和嵌套对象字段使用指针;Slice 和 any 本身可表示空值。
JSON Number 怎样映射?
全部为整数时用 int64,出现小数时用 float64,不兼容混合类型用 any。
嵌套对象会生成独立 Struct 吗?
会,属性名作为模型名候选,冲突时会添加确定性数字后缀。
会推断 time.Time 或 Enum 吗?
不会,字符串仍是 string,业务约束需要按 API 契约复核。
样例 JSON 会上传吗?
不会,解析、类型推断、命名与 Go 代码生成全部在本地运行。
继续浏览