补齐有代表性的记录
把同一种响应的多条记录放进一个数组。不同属性位置的对象分别生成嵌套类型,不会因为形状相似就强行共用同一个类型。
类型生成
观察两条示例记录的字段差异。输出包含包声明及必要的导入,可直接保存为 Go 源文件。
解析和生成均在当前浏览器内完成,不上传或存储输入。
3 个类型声明 · 2 个指针类型
JSON 转 Go 适合从接口响应起草数据模型。把同一接口的多条代表性记录放进数组,才能发现偶尔缺失、显式为 null 或类型变化的字段。
样本无法证明字段一定必填,也无法推导业务验证规则。生成结果需要结合真实接口约定检查,不能代替接口测试。
JSON 转 Go 检查同一数组位置的所有元素。第二条记录才出现的字段不会遗漏;已知类型遇到空值或缺失时可以生成指针,让零值与 nil 的区别显现出来。
普通整数字面量在 int64 范围内使用整数类型。小数、指数和超范围数字使用 json.Number,不先经过 JavaScript 浮点转换,长金额或标识数字不会在推断前被舍入。
把同一种响应的多条记录放进一个数组。不同属性位置的对象分别生成嵌套类型,不会因为形状相似就强行共用同一个类型。
时间必须保持原文时关闭日期推断。关闭嵌套命名会生成匿名结构体;关闭标签则失去原键映射,解码前需要特别核对字段名称。
自动生成等待约 350 毫秒;关闭开关会显示生成按钮,也可按 Ctrl/Cmd+Enter。修改输入或选项会立即禁用导出,成功生成当前结果后才恢复。
snake_case 和 camelCase 转为大写开头的导出字段,常见缩写如 ID 保持全大写。名称碰撞使用稳定的数字后缀,启用标签时保留可表示的原始键。
已知标量或结构体遇到 null 或缺字段时默认使用指针;切片和映射本身可以为 nil。只见过 null 的字段使用 any,指针不能区分缺失和显式空值,也不代表必填校验。
只有 int64 范围内的普通整数字面量才使用 int64。1.0 与 1e3 也使用 json.Number,因为标准解码器不能把这些写法直接装入整数。执行运算前仍需检查数值转换错误。
可选择独立命名的 Go 结构体或匿名嵌套对象。完整且日历有效的 RFC3339 字符串才推断为 time.Time,小数秒最多九位,同一位置的全部非空字符串都必须合格。
对象、数组、字符串、数字、布尔值和 null 都可输入。非对象根值使用类型别名,确保 time.Time 与 json.Number 原有的解码方法仍然有效。
同一数组位置的所有对象都参与合并。某字段在部分记录中缺失且存在具体类型证据时,默认使用指针;切片与映射无需额外指针也能表示 nil。
只有 null 的位置使用 any;同一位置出现不兼容类型也使用 any。有具体标量或结构体证据再遇到 null 时才生成指针,不凭空猜测未知类型。
需要。JSON 转 Go 根据提供的样本推断,无法了解未出现的字段、业务必填关系或未来响应。请在项目中运行 gofmt、编译及真实解码测试。
默认会按根类型和属性名生成独立类型。关闭嵌套命名选项会嵌入匿名结构体,其他推断规则不变;不同属性位置不会自动共用类型。
发现需要补充的推断边界?