语言桥梁:JSON To Go结构
使用 json-to-go 的移植版本根据 JSON 生成 Go struct 定义,并用 gofmt 格式化。键变为导出的 CamelCase 字段并带 json:"..." 标签;嵌套对象变为内联匿名 struct,null 变为 any。
编写用于 json.Unmarshal 第三方 REST API 响应的 struct。
适用场景
- 编写用于 json.Unmarshal 第三方 REST API 响应的 struct。
- 根据示例数据快速搭建 Go HTTP handler 的请求和响应类型。
使用方法
- 将 JSON 对象或数组粘贴到左侧编辑器。
- 查看生成的 struct;根类型始终命名为 AutoGenerated。
- 复制到你的包中,重命名类型;如需复用内联 struct,可将其提取为命名类型。
JSON
{
"id": 42,
"user_name": "ada",
"score": 9.5,
"active": true,
"deleted_at": null,
"tags": ["go", "json"],
"address": { "city": "Tokyo", "zip": "100-0001" }
}Go struct
type AutoGenerated struct {
ID int `json:"id"`
UserName string `json:"user_name"`
Score float64 `json:"score"`
Active bool `json:"active"`
DeletedAt any `json:"deleted_at"`
Tags []string `json:"tags"`
Address struct {
City string `json:"city"`
Zip string `json:"zip"`
} `json:"address"`
}功能与限制
生成在浏览器中进行。没有类型名、内联或命名 struct、标签方面的设置。
首字母缩略词会全部大写(id 变为 ID),snake_case 变为 CamelCase,原始键保留在 json 标签中。
整数变为 int(较大时为 int64),小数变为 float64。null、空数组和混合类型数组变为 any 或 []any。
数组中的对象结构不同时,部分对象缺少的键会加上 ,omitempty。
FAQ
能转换根节点为数组的 JSON 吗?
可以。会生成 type AutoGenerated []struct{...},合并数组中所有对象的字段。
为什么我的 null 字段类型是 any?
null 值不携带类型信息。请把 any 替换为 *string 或 *time.Time 这样的指针,以保留对 nil 的支持。
会生成命名的嵌套 struct 吗?
不会。嵌套对象是内联匿名 struct。如需引用它们,请手动移到命名类型中。