跳到主要内容
← 返回

JSON 转 Go Struct - 在线结构体生成

代码
本地运行 · 不上传

免费在线 JSON 转 Go Struct 工具,自动生成结构体定义,支持 json tag 和 omitempty

结果有帮助吗?

本地工具可在 DevTools → Network 搜索输入内容,通常不会出现在请求中。

下一步

使用指南

把 JSON 响应变成 Go struct 是接 API 的第一步,也是 json tag 与命名最易写飘的一步。本工具从样例推断字段类型与嵌套 struct,可配置命名、json tag 与 omitempty——本地生成,粘进工程后再手调类型与注释。

1. 生成 struct

粘贴覆盖主要字段的样例,选择导出命名与 omitempty,复制代码后改包名与根类型名。先让编译通过,再用真实响应写 Unmarshal 测试。

  1. 粘贴样例 JSON。
  2. 配置命名与 omitempty。
  3. 复制并改包名/根类型。

2. 标签与命名

json tag 必须与线上字段字节级一致;改 Go 字段名不影响协议。omitempty 会跳过 false、0、空字符串——零值有意义时不要滥用。调试阶段具名嵌套比匿名嵌入更清晰。

  • tag 与协议对齐。
  • 慎用 omitempty。
  • 嵌套具名便于排障。

3. 推断局限

样例整数不等于线上从无浮点;样例字符串可能实为 null。可空改指针或 Null 类型;大 ID 用 string。空数组推不出元素类型,需非空样例或手写。

4. 落地工程

用真实 payload 测试;仅严格契约时启用 DisallowUnknownFields;对外暴露稳定 DTO,生成稿可放 internal 再包装。

5. 时间与大数

RFC3339 与 Unix 秒需显式 time.Time 处理;超越 JS 安全整数的 ID 用 string 或 json.Number;键不固定用 map,勿生成上百可选字段。

  • 时间布局写进注释。
  • ID 宁可变 string。
  • 开放集合用 map。

6. 与 TS 生成分工

前端 JSON→TS、后端本页,应对同一份样例或 Schema。长期应 Schema→代码;本页适合尚未建 Schema 的摸索期,避免两端 optional 语义漂移。

常见问题

支持。注意 json tag 必须与线上字段字节级一致,改 Go 字段名不影响协议;omitempty 会跳过 false、0 和空字符串,零值有业务含义的字段要慎用。

支持。嵌套对象与数组会被递归解析,为每个层级生成对应的 struct;调试阶段建议用具名嵌套类型而不是匿名嵌入,排障更清晰。

不一定。样例里是整数不代表线上从不返回浮点;字符串字段可能实际为 null,需要改成指针或 Null 类型;空数组推不出元素类型,要补非空样例或手写。超过 JS 安全整数的大 ID 建议改用 string。

RFC3339 字符串与 Unix 秒需要显式的 time.Time 处理,并把时间布局写进注释;超出安全整数范围的 ID 用 string 或 json.Number;键不固定的对象用 map,不要生成上百个可选字段。

复制后先改包名与根类型名,让编译通过,再用真实响应写 Unmarshal 测试;只在严格契约场景启用 DisallowUnknownFields。前端配套 JSON→TS、后端用本页对着同一份样例生成,长期再转向 Schema→代码。

零成本:不收费、不登录,打开页面粘贴 JSON 即可生成本地结果。

相关工具

相关文章