JSON 转代码工具

将 JSON 样本转换为 TypeScript 接口、Go 结构体、Rust serde 结构体、Zod 模式或 JSON Schema。

正在加载工具…

JSON 转代码工具粘贴一段有代表性的 JSON 样本,即可立刻得到目标语言的强类型代码:TypeScript 接口、带 json 标签的 Go 结构体、Rust serde 结构体、Zod 模式或 draft-07 的 JSON Schema。类型直接从数据推断而来——嵌套对象会变成命名类型,数组会推断其元素类型,并非在每个数组元素中都出现的字段会被标记为可选。所有处理都在浏览器中完成,你的 JSON 不会被上传。

JSON 转代码工具 是什么?

JSON 转代码是一款完全在浏览器中运行的免费类型生成器,它读取 JSON 样本并以你选择的语言写出对应的数据模型。从「转换为」菜单选择目标——TypeScript 接口、Go 结构体、Rust serde 结构体、Zod 模式或 JSON Schema——并设置「根类型名称」来命名顶层类型。推断引擎会遍历 JSON:字符串、数字、布尔值和 null 映射为原生类型,嵌套对象被提升为各自的命名类型,数组采用其元素类型,而在部分数组元素中缺失的键会成为可选项。前端和后端开发者用它从 API 响应快速搭建 DTO、起草校验模式,并在不手写样板代码的情况下保持客户端与服务端类型一致。

如何使用 JSON 转代码工具

  1. 在输入框中粘贴或输入一段有代表性的 JSON 样本,或点击「示例」加载范例。
  2. 打开「设置」,在「转换为」下选择目标:TypeScript、Go、Rust、Zod 或 JSON Schema。
  3. 设置「根类型名称」以控制顶层接口、结构体或模式的名称。
  4. 在输出面板查看生成的代码——当你编辑 JSON 或更改选项时,它会自动刷新。
  5. 查看「类型」统计了解推断出了多少个命名类型,然后点击「复制」获取结果。

示例

对象转 TypeScript 接口

输入

{ "id": 1, "name": "Ada", "active": true }

输出

export interface Root {
  id: number;
  name: string;
  active: boolean;
}

嵌套对象转 Go 结构体

输入

{ "user": { "age": 30 } }

输出

type User struct {
	Age float64 `json:"age"`
}

type Root struct {
	User User `json:"user"`
}

含缺失键的数组转 Zod 模式

粘贴像 [{"a":1,"b":2},{"a":3}] 这样的数组并把「转换为」切换到 Zod。由于第二个元素没有 b,生成器会在推断出的 z.object 中把 b 标记为 .optional(),于是该模式同时接受两种形态。

常见问题

我的 JSON 会被上传吗?
不会。解析和代码生成全部使用内置推断引擎在你的浏览器中完成。你的 JSON 绝不会离开设备,工具也能离线使用。
支持哪些目标?
TypeScript 接口、Go 结构体(带 json 标签,可选字段用 omitempty)、Rust serde 结构体(带 Serialize/Deserialize 派生,字段被重命名时使用 rename)、Zod 模式以及 draft-07 的 JSON Schema。工具只会生成它能从样本中忠实推断出的内容。
可选字段是如何确定的?
来自你的样本。当数组中包含对象,而某个键在其中部分对象里缺失时,该键会被推断为可选。除此之外,样本中出现的每个键都被视为必需。
数字、null 和混合类型怎么处理?
数字映射为语言的浮点类型(number、float64、f64),null 按目标映射为可空或值类型,而在不同样本中持有不同类型的字段会回退为宽松类型(unknown、interface{}、serde_json::Value),而不是凭空猜测。
为什么我的输出是空的或显示错误?
输入必须是有效的 JSON。如果解析失败,工具会在可用时显示带行号和列号的错误;修正标记处后,代码会立即重新生成。

相关工具