YamlBox

代码生成器

JSON 到 Go 结构生成器

粘贴 JSON 并在几秒钟内获得带有正确 json 标签的 gofmt 风格的结构。在数组项中检测到的可选字段将变为 omitempty,可为 null 的值将变为指针,而整数仍保留为整数。

转换选项

JSON 样本

示例: 用户对象 · Webhook 事件 —⌘/Ctrl + Enter 转换 · 拖放文件以加载它 · 本地处理

Go 结构体

输出是只读的。使用复制、下载或共享将其移出。

如何使用 JSON 前往 工具

  1. 粘贴您的 JSON

    来自您正在积分的 API 的响应效果最佳。包含多个数组项,以便可选字段可见。

  2. 设置根类型名称

    以资源命名:用户、事件、订单。嵌套类型是根据它们的键自动命名的。

  3. 复制到您的 Go 文件中

    粘贴到您的项目中并运行 gofmt。字段名称大写,标签与原始键完全匹配,因此 json.Unmarshal 立即生效。

这个工具有何不同

  • json 标签忠实于原始键,包括 Snake_case 和 dashes
  • omitempty 对于某些数组项中缺少的字段
  • 真正可为 null 的值 (*string) 的指针类型,因此 null 可以干净地解组
  • 来自实际样本值的 int 与 float64;任何不可调和的混合
  • 带制表符缩进的 gofmt 兼容输出

按架构划分的隐私: 此页面不包含接收您输入的分析,并且转换代码在您的选项卡中运行。加载后您可以断开网络并继续工作。

JSON 前往 — 常见问题

为什么有些字段会变成指针?

JSON null 不能存储在普通字符串或 int 中,因此可为 null 的字段将获得一个指针 (*string, *int)。这使得encoding/json能够区分“不存在”和“存在但为空”而不会失败,这正是指针类型的用途。

当字段具有混合类型时会发生什么?

如果一个值在一项中是字符串,而在另一项中是数字,则生成器将使用 any 而不是发明错误的具体类型。如果 API 确实那么松散,那么您可以决定使用自定义 UnmarshalJSON。

生成的标签是否包含 omitempty?

仅适用于示例中至少一项中缺少的字段。必填字段使用普通标签,因此往返不会丢失数据。

输出 gofmt 兼容吗?

是的 — 制表符、对齐方式和字段排序遵循 gofmt 约定。粘贴后运行 gofmt -l,它应该报告没有更改。

我可以为大型响应生成结构吗?

是的。嵌套对象成为单独的命名结构,而在解析的 JSON 中不可能进行循环,因此即使深度嵌套的有效负载也会生成一组扁平、可读的类型。

正在搜索 “json 到 golang 结构体”, “go 结构生成器”, “json 上网”?您来对地方了—— 浏览所有19工具.

深入阅读

博客文章 · 5 分钟阅读 JSON 到 Go:第一次尝试时解组的结构 将 JSON 转换为具有正确字段名称和 json 标签的 Go 结构,包括嵌套类型 - 以及要观察的数字、null 和时间陷阱。 阅读指南 →