GO

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

目标:保留多条记录中观察到的可选性并快速得到可复核起点

  1. 把多条代表性响应对象作为一个 JSON 数组粘贴。
  2. 设置领域根类型名,并决定可选字段是否使用指针和 omitempty。
  3. 生成后把通用类型和字符串替换为领域 Enum、时间与已校验自定义类型,再编译。

结果:得到反映已观察字段、同时保留契约决策空间的嵌套 Go 模型。

常见问题

可以从对象数组推断可选字段吗?

可以,只要某个 Key 在任一样例中缺失或为 null,就会视为可选。

什么时候生成指针?

开启选项后,可选标量和嵌套对象字段使用指针;Slice 和 any 本身可表示空值。

JSON Number 怎样映射?

全部为整数时用 int64,出现小数时用 float64,不兼容混合类型用 any。

嵌套对象会生成独立 Struct 吗?

会,属性名作为模型名候选,冲突时会添加确定性数字后缀。

会推断 time.Time 或 Enum 吗?

不会,字符串仍是 string,业务约束需要按 API 契约复核。

样例 JSON 会上传吗?

不会,解析、类型推断、命名与 Go 代码生成全部在本地运行。

继续浏览