JSON 输入
TypeScript 输出
interface Address {
city: string;
zip: null;
}
interface Root {
name: string;
age: number;
isActive: boolean;
tags: string[];
address: Address;
scores: number[];
}免费 JSON 转 TypeScript · 接口样例生成类型定义 · 萤炬工具箱 · 工具说明与使用指南
免费 JSON 转 TypeScript · 接口样例生成类型定义 · 萤炬工具箱
适用场景与相似需求
从接口响应样例生成 TypeScript 草稿后,核对可选字段、数组、联合类型和数值;单样本推断不等于完整 API 契约或运行时校验。
JSON 转 TypeScript 工具根据接口返回样例生成 interface 或 type,把嵌套对象拆成命名定义,并提供根名称、统一可选属性与 readonly 开关。适合联调时先建立类型草稿,再补齐业务约束,省去逐个抄写字段的重复工作。转换在浏览器里完成,不需要上传样例;它推断的是这份 JSON 中实际出现的值,不是完整接口规范,缺省字段、同名类型、联合类型和异常样本仍需要人工复核。
使用步骤
- 把一份合法 JSON 对象粘贴进输入框,移除接口工具附带的状态行、注释和代码围栏,先解决页面显示的解析错误。
- 设置有业务意义的根类型名,再选择 interface 或 type;需要全部属性可选或只读时开启对应选项,注意开关不是逐字段配置。
- 对照输出查看嵌套对象和数组,重点检查空数组、null、字段缺失以及多个对象使用同名嵌套属性时是否产生不合适的声明。
- 复制结果到项目类型文件,结合其他返回样本补充联合类型与可选字段,并运行项目自己的 TypeScript 检查;不要把生成文本直接当成已经通过编译的契约。
功能与限制
- 混合原始值数组可以生成联合类型,但对象数组、重复命名和嵌套结构仍有推断局限;生成结果只是开发起点。
- readonly 仅是 TypeScript 静态约束,不会自动冻结运行时对象;可选问号也不代表后端真的允许字段缺省。
- 手机可用于简单粘贴查看,长结构更适合在电脑上对照接口文档审查,最终以项目编译与真实返回契约为准。
常见问题
- 支持 JSON5、注释、单引号或 YAML 吗?
- 输入使用 JSON.parse 解析,需要标准 JSON。键名和字符串应使用双引号,尾随逗号、注释及其他数据格式都不能直接作为合法 JSON 输入。出错时先回到数据本身检查,不要反复切换 interface 与 type 来试图解决解析问题。
- 空数组和 null 会生成什么?
- 空数组没有元素可参考,会输出 any[];null 值推断为 null,不会自动猜出它平时应该是字符串还是对象。若接口实际允许有值或空值,需要依据契约手动补成相应联合类型,不能依靠单份样例推断所有状态。
- 对象数组的缺字段和同字段多类型会自动处理好吗?
- 不能保证。对象数组会合并字段,但相同键的样例值可能被后出现的值覆盖,并不会完整统计缺失情况与所有类型变化。缺字段不会自动逐项标成可选,统一可选开关则会影响全部生成属性,所以数组结果必须对照多条记录复核。
- 中文键名、特殊键名和根名称有什么限制?
- 不符合当前英文标识符判断的属性名会用引号包裹,中文字段可保留为带引号属性;但包含引号或复杂转义的特殊键仍应检查。类型名称会做字符替换,不能保证消除重名、保留字或不合适的数字开头,建议使用清晰的英文类型名。
- 根节点一定可以是数组或字符串吗?
- 这页以根对象的字段构造类型为主,推荐输入 JSON 对象。不要把根数组、空对象或原始值的输出当作完备的顶层类型建模;有特殊根结构时,可在项目里手工定义别名,或用有意义的包装对象辅助观察字段结构后再调整。
- 有没有大小限制,会上传或批量读文件吗?
- 页面没有设置明确的输入字符硬上限,但会实时解析和递归推断,过大或过深的样例可能拖慢浏览器。没有多文件批处理入口,转换逻辑也不提交 JSON 给后端;仍建议先去掉令牌、真实个人信息和无关大字段,再用代表性的小样本生成。
留言板
0 条留言对话,从你开始
还没有留言。分享一个想法,或只是打声招呼。