JSON 转 Go Struct
JSON 转 Go struct 工具,生成带 json tag 的结构体,嵌套对象生成命名规范的子 struct,支持自定义包名与 omitempty 风格选项。运行在浏览器本地,数据不出本机。
在工作台中打开 本地处理 · 数据不上传
怎么使用
- 1
粘贴 JSON
粘贴接口 JSON,嵌套对象与数组自动展开为对应的 Go 类型。
- 2
设置包名与根类型
填写 package 名(如 model)与根结构体名,字段名自动驼峰化。
- 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 即可工作。