JSON TO GO STRUCT

JSON 转 Go Struct:生成字段、json tag 和嵌套类型。

把接口响应快速整理成 Go 数据模型初稿。支持对象、对象数组和嵌套结构;结果可直接复制进项目后继续补充业务类型与序列化策略。

输入 JSON 对象或对象数组后生成 Go struct。
JSON 输入0 字符 · 0 行
Go 输出struct + json tag
Go 数据模型会显示在这里。
数字按样例推断为 intfloat64null 与空数组无法显示真实类型,会生成 any[]any

生成规则:JSON 值会映射成什么 Go 类型?

JSON 样例默认 Go 类型生成结果
"ORD-001"string导出字段加原始键名的 json tag。
42int金额、长 ID 与计数仍需按接口定义复核。
89.9float64涉及精确金额时通常要改成字符串或 decimal 库类型。
truebool保持布尔字段,不添加 omitempty
[{"id":1}][]Item对象数组生成元素 struct;顶层数组会生成类型别名。

生成后,建议优先检查这三项

字段名与缩写

工具会把 user_id 转成导出字段 UserID,并保留 json:"user_id"。少见缩写和非常规键名仍应人工审阅。

可空值

单个样例中的 null 只会得到 any。若接口允许缺失或空值,请改成指针、sql.Null* 或项目约定的 nullable 类型。

数组完整性

数组元素按第一个样例推断。混合类型数组或字段不稳定的列表,应以接口文档和多份真实响应为准。

包名与分层

结果默认使用 package model。实际项目应移动到合适的 DTO、client 或 transport 包中,而不是直接当作领域模型。

这个工具不替代 API 契约

样例只能说明“这一次响应长什么样”,不能证明字段永远存在。生成 struct 后,请使用真实接口响应做 json.Unmarshal 测试,并根据接口文档补充时间、金额、枚举、可选字段与校验规则。

不要把外部接口的 JSON 样例直接视为内部领域模型。先在边界层保留 DTO,再做明确的转换,后续接口变更才更容易控制。

常见问题

能输入顶层 JSON 数组吗?
可以。工具会为数组元素推断 struct,并生成根类型的数组别名。
为什么不自动加 omitempty?
是否忽略零值取决于你的序列化与接口契约,不能仅从一个 JSON 样例判断。
会生成嵌套匿名 struct 吗?
不会。当前会生成独立命名 struct,便于复用、测试和后续手工调整。