JSON转Go结构体
粘贴JSON,一键生成Go结构体
这个工具能做什么
这个工具把一段 JSON 数据转换成对应的 Go 语言 struct 定义。你把接口返回的 JSON 样例粘贴进去,点击生成,就能得到字段名为 PascalCase、每个字段都带 json 标签(标签内容是原始键名)的结构体代码。对接第三方 API 或后端接口时,手写这类承接结构很常见,字段一多就容易漏标签、类型写错、大小写不符合 Go 的导出规则;这个工具把这段机械劳动自动化,直接给出可以粘进项目里的结构体骨架。
工具的核心是对 JSON 做递归解析,再根据每个值的实际类型推断对应的 Go 类型。整数映射为 int64、小数为 float64、字符串为 string、布尔为 bool、null 因为无法确定类型而落到 interface{};遇到对象就生成嵌套的 struct,遇到数组则取元素类型生成切片。字段名会从 JSON 键名转成 PascalCase 以满足 Go 只导出首字母大写字段的规则,同时把原始键名保留在 json 标签里,保证 Unmarshal 和 Marshal 时字段能和 JSON 键一一对应。
最典型的用法是对接 HTTP 接口时,把一份真实的响应样例贴进来快速得到承接类型。比如你从某个 REST API 拿到一段含 user 对象和 orders 数组的返回,生成后就有了带嵌套 struct 和切片的骨架,再配合 encoding/json 的 Unmarshal 就能把响应解析进内存。又比如处理配置文件或消息队列里的 JSON,先用样例生成结构体,再按业务微调字段类型和标签,能省去对着文档从零敲结构体的时间。
使用时要留意几个边界情况。数值类型是按样例值推断的,JSON 本身不区分整数和浮点,如果某字段样例恰好是整数但业务上可能出现小数,生成的 int64 就得手动改成 float64;值为 null 的字段会退化成 interface{},通常要按真实语义换成具体类型或指针。空数组因为没有元素可参考,推断不出具体的元素类型。另外生成的标签是最基础的 json 键名映射,不含 omitempty、string 等选项,时间字段也只会是 string 或数字而不是 time.Time,这些都需要生成后按需补充。
JSON转Go结构体是一个免费的在线工具,打开网页就能用,不用下载也不用注册。平时大家搜的“json转go”、“json转struct”、“json转结构体”,说的都是这个。
常见使用场景
- 把第三方接口返回的 JSON 样例转成 Go 结构体
- 对接 REST API 时快速生成带 json 标签的承接类型
- 把配置文件里的 JSON 转成可解析的 struct
- 根据消息队列里的 JSON 消息生成对应结构体
- 把多层嵌套 JSON 快速转成带嵌套 struct 的骨架
使用方法
- 把内容粘贴到输入框(生成类工具直接设置选项)。
- 按需要选择选项,点操作按钮。
- 结果出现在下方,点「复制结果」即可带走。