JSON 转 Go Struct

JSON 转 Go struct 工具,生成带 json tag 的结构体,嵌套对象生成命名规范的子 struct,支持自定义包名与 omitempty 风格选项。运行在浏览器本地,数据不出本机。

在工作台中打开 本地处理 · 数据不上传

怎么使用

  1. 1

    粘贴 JSON

    粘贴接口 JSON,嵌套对象与数组自动展开为对应的 Go 类型。

  2. 2

    设置包名与根类型

    填写 package 名(如 model)与根结构体名,字段名自动驼峰化。

  3. 3

    复制 Go 代码

    生成带 `json:"field"` 标签的 struct,配合 encoding/json 直接使用。

功能特点

标准 json tag

每个字段自动附带 `json:"原键名"` 标签,encoding/json 开箱即用。

字段名自动导出

JSON 键转为大写开头的驼峰字段(user_id → UserID),满足 Go 导出规则。

数值类型推断

整数默认 int64、浮点 float64、可空与混合类型给出 interface{} 兜底。

包名可配

支持填写 package 名,「仅类型」模式保留 package 声明、省略解析样板。

常见错误与排查

  • ! Go 没有可选字段语义,nil 指针与零值需要结合业务判断,生成结果建议做一次人工 review。
  • ! 时间字段在 JSON 中是字符串,会生成为 string;需要 time.Time 时手工替换并实现自定义解析。
  • ! interface{}(Go 1.18+ 也可写作 any)表示该字段类型无法唯一确定,贴更多样例有助于精确推断。

常见问题

为什么有些字段是 interface{}?

同名字段在样例中出现了多种类型(如一会儿是数字一会儿是字符串),Go 是静态类型无法用一个具体类型表达,只能回退到 interface{},请与接口提供方确认类型后手工收窄。

支持 omitempty 标签吗?

当前生成标准 json 标签,omitempty 会影响零值序列化语义,属于业务决策,可在复制后的代码中按需为可选字段补充。

生成的代码需要第三方库吗?

不需要。仅依赖标准库 encoding/json,配合 json.Unmarshal / json.Marshal 即可工作。

相关工具