生成与代码结构工具

JSON → TypeScript

粘贴 JSON 样本,生成 TypeScript interface 或 type alias。

JSON Input

Generated Code

合并所有样本对象,生成包含可选字段、联合类型和嵌套类型的 TypeScript。

JSON 数据和生成代码仅在您的浏览器中处理,不会上传或自动保存,也不会运行输入中的代码。

这个工具是什么

根据 JSON 样本生成 TypeScript 类型声明,便于查看字段、数组和嵌套结构。数组中的每个元素都会参与类型判断,未在所有对象中出现的字段会标记为可选;输出包含类型定义,不包含原始数据值。

如何使用

  1. 输入合法 JSON,建议使用对象或对象数组。
  2. 设置根类型名称,选择 interface 或 type alias。
  3. 点击“转换”,检查缺失字段的 ?、null 联合和嵌套类型。
  4. 复制代码或按清理后的根类型名下载 .ts 文件。

使用示例

  • [{"id":1,"name":"Tom"},{"id":2,"email":"a@example.com"}]:id 必填,name 和 email 可选。
  • [1,"a",true]:元素类型保留 number、string、boolean 的联合。
  • {"date":"2026-01-01","matrix":[[1,2],[3,4]]}:date 为 string,matrix 为 number[][]。

类型映射规则

字符串映射为 string,整数和小数映射为 number,布尔值为 boolean。缺失与显式 null 分开记录:缺失生成 ?,已知类型同时出现 null 时加入 | null;只有 null 的样本不能推断出字符串。空数组使用 unknown[],对象会生成稳定命名的嵌套类型。非法属性名使用引用键,根名称和类型名称经过合法化并消除冲突。日期文本保持 string。样本不能证明所有未来数据都符合生成类型。 输入和输出各最多 1 MiB、嵌套最多 64 层、100000 个节点、5000 个合并字段、256 个类型。不安全整数、非有限数字或下溢为零的数值会报错;其他小数基于浏览器浮点精度。

常见用途

  • 为 API 响应样本创建类型草稿。
  • 检查对象数组中哪些字段可能缺失。
  • 为嵌套 JSON 建立可读的类型声明。

隐私说明

JSON 数据和生成代码仅在您的浏览器中处理,不会上传或自动保存,也不会运行输入中的代码。

如需保留结果,请在离开页面前复制或下载到本地。

FAQ

为什么日期字符串没有变成 Date?

JSON 没有 Date 类型;日期形状的字符串默认仍是 string,运行时转换需要应用自行处理。

可选字段是如何识别的?

如果某个字段只在部分对象样本中出现,生成的类型会将它标记为可选。提供多个有代表性的样本,有助于更完整地反映字段情况。

显式 null 与缺失字段有什么区别?

null 是字段有值且值为空,缺失是字段不存在;输出分别以类型联合和可选标记表达。

数组元素类型不同会怎样?

兼容的对象结构合并,整数和小数统一为 number,异质基本类型保留联合类型。

输出是否就是完整的数据验证器?

不是。TypeScript 类型只提供静态描述,不会自动在运行时验证 JSON,也不能推断未出现的数据情况。

返回开发者工具分类首页