跳到主要内容

JSON 转 Go Struct

样例 JSON 生成 Go struct 与 json tag,混合类型 any 兜底。

本地计算 · 数据不出浏览器
样例 JSON
0 字符1 行0 B

生成结果(本地推断,零上传)

粘贴样例 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 自动补。

查看更多格式转换,或浏览全部工具。