JSON 转 Go Struct
样例 JSON 生成 Go struct 与 json tag,混合类型 any 兜底。
请粘贴一份样例 JSON(对象或数组)。
原因:类型定义从样例数据反推,样例为空无从推断。
建议:贴接口响应示例、配置文件或测试数据均可,对象数组最佳。
生成结果(本地推断,零上传)
粘贴样例 JSON 后,类型定义会显示在这里。
使用说明
这个工具解决什么问题
Go 服务对接接口,照着响应示例手写 struct 是件琐碎事:字段名转 PascalCase、逐个补 json tag、嵌套结构逐层建类型,碰到 type、range 这类键名还会撞上关键字编译不过。这个工具从 JSON 样例直接生成 Go struct:字段名 PascalCase,json tag 自动生成;混合类型字段以 any 兜底并给出警告;Go 关键字自动加 Field 后缀避让;空数组推断 []any;嵌套 struct 先定义后引用,输出即能编译。纯浏览器本地运行,数据不上传。
核心能力
样例反推:一份 JSON 生成整套 struct,嵌套结构全覆盖。json tag 自动生成:按原键名写 tag,序列化口径直接对齐。关键字避让:type/range 等键名自动加 Field 后缀,保证可编译。混合类型兜底:以 any 处理并给出警告,空数组推断 []any。零上传:本地转换,样例不出本机。
使用建议
用字段最全的响应样例做输入,嵌套越深越能少手写;生成后重点处理 any 兜底的字段——工具已警告,按业务改成具体类型或自定义 UnmarshalJSON。样例是单个快照,可空字段建议按需改成指针类型;改完放进项目跑一次真实解析再定型,别拿新响应反复重生成。
常见问题
json tag 是必须的吗?
工具自动生成。Go 的 JSON 解析默认按字段名大小写不敏感匹配,但显式 json tag 才是可靠做法,tag 按原键名生成,序列化反序列化不跑偏。
字段名遇到 Go 关键字怎么办?
自动加 Field 后缀避让:键名 type 生成 TypeField、range 生成 RangeField,保证能编译,json tag 仍指向原始键名,数据解析不受影响。
混合类型的字段怎么处理?
以 any 兜底并给出警告——同一字段既有字符串又有数字时,Go 没有现成类型可表达,需要你按业务改成自定义类型或指针字段。空数组推断为 []any。
嵌套结构怎么生成?
嵌套对象生成独立 struct,先定义后引用,输出即能编译;字段名统一 PascalCase(导出可见),配合 json tag 对应原键名。
相关工具
JSON 转 Java POJO
样例 JSON 生成 Java 类与 getter/setter,Jackson 注解可选。
JSON 转 Python 模型
样例 JSON 生成 Pydantic BaseModel 或 dataclass,别名自动补。
JSON 转 C# 类
样例 JSON 生成 C# 类,PascalCase 与 JsonPropertyName 自动补。