JSON 转 Go
从 JSON 生成带 JSON 标签的 Go 结构体
粘贴 JSON 或加载示例以生成 Go 代码。
JSON 转 Go 会生成什么
JSON 转 Go 会将 API 响应或任意 JSON 示例转换为可直接用于 encoding/json 的 Go struct 定义。每个导出字段都带有 json:"key" 标签,因此重命名的字段仍能解码。struct 标签无法表达的键(空键、引号、逗号或 emoji 等符号)会以 json:"-" 排除并在提示中列出,而不是悄悄映射到错误的名称。
使用方法
- 1.粘贴 JSON、上传或拖放 .json 文件,或加载一个示例。
- 2.设置根结构体名称和包名(默认为 main)。
- 3.开启或关闭指针和 omitempty;在“高级”中可以内联嵌套结构体。
- 4.阅读输出下方的提示,然后复制代码或下载 models.go。
类型如何推断
- •会检查数组中的每个元素,而不只是第一个,同一数组中的对象会被合并。
- •部分对象中缺少的键为可选;有时为 null 的键为可为 null。两者分开处理。
- •同一位置出现 1 和 2.5 时会放宽为小数;其他混合情况会给出提示。
- •空数组和始终为 null 的值没有类型依据,因此使用通用类型,并附提示说明原因。
- •类型映射:string → string,整数 → int64(超出范围时为 uint64 或 json.Number),小数 → float64,布尔值 → bool,数组 → []T,对象 → struct,未知或混合 → any。
- •开启指针后,可为 null 或可选的标量和结构体会变为 *T;切片和 any 本身已有 nil 值,因此永远不会使用指针。
omitempty、限制与隐私
omitempty 仅添加到示例中缺失或为 null 的字段。编码时它也会省略 0、"" 和 false 等零值,因此与“可选”并不相同。示例只反映数据某一次的样子,而不是完整的 API 契约。在依赖这些代码之前,请检查可选字段、通用类型和数字宽度。输入限制为 5 MB 和 256 层嵌套;从 2 MB 起,需点击“生成”按钮才会生成。所有处理都在您的浏览器中运行,JSON 不会被上传。
