什么是JSON转TypeScript?

JSON to TypeScript 将 JSON 数据转换为 TypeScript 接口和类型定义。它能识别字符串、数字、布尔值、数组和嵌套对象,并将可空字段标记为可选并使用联合类型。省去手动为 API 响应编写类型的麻烦。

如果数组里对象的字段不完全一样,生成器会做合并:部分记录缺少的字段会被标成可选(`?`)。嵌套对象会各自生成命名接口(User、UserAddress、UserAddressGeo)。混合类型的数组会得到联合类型如 `(string | number)[]`。识别到 ISO 8601 日期字符串时会加上 JSDoc 提示;若某个字符串字段在多个样本中只取少数固定值,会被推断为字符串字面量联合类型而非普通 string。除了 TypeScript 输出,同一份输入还能生成另外三个标签:对应的 Zod 模式、填充了真实示例值的模拟数据,以及 draft-07 JSON Schema。可以在接口和类型别名之间切换、控制是否加 `export`、按 A→Z 排序键名,并开启驼峰命名把 snake_case 或 kebab-case 键转换成符合 TypeScript 习惯的名字。

使用方法

  1. 第一步——粘贴 JSON 对象或数组、拖入 .json 文件,或填入 URL 直接获取在线 JSON。工具会分析其结构并为每个字段推断 TypeScript 类型。
  2. 第二步——自定义输出:设置根接口名称,在接口与类型别名之间选择,并为可能为 null 的字段切换可选属性。
  3. 第三步——复制输出或下载文件。四个标签共用同一套设置:TypeScript 类型、对应的 Zod 运行时校验、可直接用于测试和 Storybook 的模拟数据,以及供 OpenAPI 或表单库使用的 draft-07 JSON Schema。所有嵌套对象都会自动获得各自命名的接口。

何时使用

  • 为没有 OpenAPI/Swagger 文档的接口响应快速生成类型。
  • 为脚本里要读取的 JSON 配置(tsconfig.json、package.json)生成类型。
  • 几秒内为第三方 SDK 的返回结构搭一层带类型的封装。

结果

您的 API 返回一个包含嵌套地址和偏好设置的用户对象。粘贴 JSON 响应,将根名称设为 "User",即可得到清晰的接口:User、UserAddress、UserPreferences——可选字段将自动标注为 "string | null" 类型。

常见问题

生成器怎么判断哪些字段是可选的?
如果输入是单个对象,开启「把可空字段标为可选」后,值为 null 的字段会加 `?`。对于对象数组,生成器会合并所有记录的字段,只在部分记录中出现的字段会变成可选。
数组里的元素结构不一致怎么办?
同样的逻辑:所有元素都有的字段是必需,部分元素有的字段是可选,基本类型不一致的字段会变成联合类型如 `string | number`。最终生成的接口能描述整个数组。
应该选 interface 还是 type 别名?
interface 更容易通过声明合并扩展,是描述接口数据的常见选择。type 别名在后续要结合联合、交叉、映射类型时更灵活。两者在运行时没区别,跟随项目约定即可。
为什么输出里有些属性名带引号?
如果键里包含不能作为 TypeScript 标识符的字符——连字符、空格、数字开头、点号——生成器会用引号包起来。这样类型保持合法,在代码里得用 `obj["weird-key"]` 这种方式访问。
接口返回的字段结构变了,生成的类型会自动跟进吗?
不会。类型是对你贴入 JSON 当下结构的快照,自己不会更新。常见做法是在接口版本变化时重新生成,代码评审时对比 diff 就能发现差异。

相关工具