JSON 转 Go 结构体转换器
粘贴一段 JSON 样本,立即得到对应的 Go 类型定义——转换随输入实时进行,完全在浏览器中完成。对象键会转换为导出的 PascalCase 字段名,以便 encoding/json 能对其进行序列化;每个字段都带有保存原始键名的 json:"…" 标签,经标准库来回转换后能原样还原你最初的 JSON。整数映射为 int64,小数映射为 float64,嵌套对象会生成与数据结构一一对应的内联匿名结构体。 由于类型是从单个样本推断的,请把输出当作高质量的初稿来对待:样本里恰好是 42 的字段会被推断成 int64,即使该 API 也可能返回 41.5;null 和空数组因为看不出元素类型而输出为 interface{};切片的类型只取决于第一个元素。请检查结果,把你更了解的字段类型收紧,并为可选字段手动加上 ,omitempty 或指针类型。你的输入不会离开设备,并保存在 localStorage 中,刷新页面后依然保留。
—
Go 结构体
使用方法
- 在输入框中粘贴或输入一段 JSON 样本——转换是实时的,没有按钮需要点。
- 如有需要,为根结构体命名(默认 AutoGenerated);名称会被规范为导出的 PascalCase 标识符。
- 用复制按钮复制生成的定义,粘贴到你的 Go 文件里。
- 检查推断出的类型:可能出现小数的数字改宽,替换 interface{} 占位符,为可选字段加上 ,omitempty。
常见问题
- 数字会被推断为什么类型?
- 整数转换为 int64,带小数部分的数字转换为 float64。这只是基于单个样本的推断——如果某字段可能出现小数,请自行改为 float64;需要精确的十进制处理时可考虑 json.Number。
- null 或空数组如何处理?
- null 映射为 interface{},空数组映射为 []interface{},因为样本中没有任何类型信息。弄清真实类型后请手动替换——可能为 null 的字段在 Go 中通常更适合用指针表示。
- 字段名和 json 标签是怎么确定的?
- 键名按非字母数字字符拆分后以 PascalCase 拼接成导出标识符(user_id 变成 UserId),因为 encoding/json 只能访问导出字段。原始键名会原封不动保留在 json 标签里,序列化时能精确还原你的键名。
- 嵌套对象会生成单独的具名类型吗?
- 不会——它们以内联匿名结构体输出,让结果保持为一条可随处粘贴的自包含声明。如果同一结构在多处重复,请手动提取为具名类型。另外,数组元素类型只根据第一个元素推断,混合类型的数组不会被识别出来。
- 我的 JSON 会被发送或存储到某处吗?
- 它不会离开浏览器——解析和生成都是纯客户端 JavaScript。为方便起见,输入内容和根名称会保存在浏览器的 localStorage 中,刷新后仍在;在共用设备上粘贴过敏感内容后,记得清空输入。
相关工具
JSON 转 Rust 结构体转换器 (serde)
在浏览器中将 JSON 对象转换为带 serde 派生和类型映射字段的 Rust 结构体。
开发 0 0
Open Graph & Twitter Card 生成器
填表单,得到可粘贴的 `<meta>` 块 — Facebook / LinkedIn / Slack 的 Open Graph 与 X / Discord 的 Twitter Card 标签。
开发 0 0
JSON 转 Python 数据类转换器
在浏览器中将 JSON 对象转换为带类型提示的 Python @dataclass 定义。
开发 0 0
JSON 转 Kotlin 数据类转换器
在浏览器中将 JSON 对象转换为带类型属性的 Kotlin 数据类。
开发 0 0
JSON 转 C# 类转换器
在浏览器中将 JSON 对象转换为带自动属性类型映射的 C# 类。
开发 0 0
JSON 转 Java 类(POJO)转换器
在浏览器中将 JSON 对象转换为带类型映射字段的 Java POJO 类。
开发 0 0