这个工具是什么
根据 JSON 样本生成 TypeScript 类型声明,便于查看字段、数组和嵌套结构。数组中的每个元素都会参与类型判断,未在所有对象中出现的字段会标记为可选;输出包含类型定义,不包含原始数据值。
如何使用
- 输入合法 JSON,建议使用对象或对象数组。
- 设置根类型名称,选择 interface 或 type alias。
- 点击“转换”,检查缺失字段的 ?、null 联合和嵌套类型。
- 复制代码或按清理后的根类型名下载 .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,也不能推断未出现的数据情况。