生成规则:JSON 值会映射成什么 Go 类型?
| JSON 样例 | 默认 Go 类型 | 生成结果 |
|---|---|---|
"ORD-001" | string | 导出字段加原始键名的 json tag。 |
42 | int | 金额、长 ID 与计数仍需按接口定义复核。 |
89.9 | float64 | 涉及精确金额时通常要改成字符串或 decimal 库类型。 |
true | bool | 保持布尔字段,不添加 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,便于复用、测试和后续手工调整。