JSON 转 Go Struct

根据有代表性的 JSON 对象或数组生成 Go struct 声明,包括嵌套类型、可导出的字段名和保留原属性名的 json 标签。

设置包名和根类型名称,然后生成完整的 Go 源文件,其中包含有效的可导出字段以及保留原属性名的 json 标签。在应用中使用这些类型前,请检查依赖样本推断的类型选择。

JSON 值如何映射到 Go 类型

如何从 JSON 生成 Go struct

  1. 粘贴一个 JSON 对象或非空数组,也可以加载示例数据。
  2. 设置包名和根类型名称,并选择是否在 json 标签中加入 omitempty。
  3. 生成 Go 源代码,检查推断的类型,然后复制或下载结果。

JSON 转 Go struct 常见问题

可以使用哪种 JSON 输入?

可以输入一个 JSON 对象或任意非空 JSON 数组。顶层数组会转换为命名切片,数组中的每个对象元素都会参与字段推断。属性名必须能由 Go 标准 encoding/json 的 struct 标签表示;不支持的名称会明确报错,而不会被静默更改。

对象数组和缺失字段如何处理?

对象数组会合并所有样本元素的键。某个字段即使只出现在部分元素中,也会根据已有值生成。omitempty 选项会修改每个 json 标签,但不会添加指针,也不会校验必填字段。

null 和混合值会如何处理?

null 值、不兼容的混合值或包含不兼容值的数组会转换为 any。空数组会转换为 []any,因为样本无法表明元素类型。

生成的类型可以不经检查直接使用吗?

请将结果作为基于样本生成的起点。将类型加入项目之前,请检查可选字段、时间字符串、类似映射的对象、数值范围,以及可能超出 JSON 数字精确范围的标识符。

我的 JSON 会上传吗?

不会。本工具会在当前浏览器标签页中解析并转换 JSON,不会将其上传到服务器。

相关工具: JSON 格式化工具 · JSON 转 TypeScript · JSON Schema 生成器