JSON
TypeScript
interface Profile {
age: number;
city: string;
}
interface RootObject {
id: number;
name: string;
active: boolean;
roles: string[];
profile: Profile;
lastLogin: null;
}关于 JSON 转 TypeScript
从后端拿到一段 JSON 响应后,前端往往要手写对应的 TypeScript 接口,既枯燥又容易和真实数据对不上。本工具在浏览器本地解析样例 JSON,递归推断出嵌套对象、数组元素和字段类型,自动生成 interface(或 type)定义。所有推断在本地完成,数据不上传,可放心粘贴包含真实业务字段的接口响应。 建议在日常开发中收藏本工具,遇到数据格式转换需求时即可快速打开使用。所有转换均在浏览器本地完成,数据不会上传,可放心粘贴敏感内容。
使用场景
- 对接后端接口 — 把接口返回的 JSON 粘进来,立即得到可直接用于前端的类型定义,避免手写出错。
- 生成 DTO 类型 — 为 API 请求/响应体快速生成数据传输对象类型,统一前后端字段契约。
- 补全第三方 SDK 类型 — 第三方接口没有类型声明时,用样例响应反推一套可用的 interface。
- Mock 数据建模 — 根据 Mock JSON 生成类型,让测试和组件 props 都有类型约束。
- 重构旧项目 — 把散落的 any 类型用真实 JSON 还原为精确接口,提升类型安全。
常见问题
嵌套对象会怎么处理?
每个嵌套对象都会被提取为独立的命名 interface,并在父接口中引用,保持结构清晰、可复用。
数组里类型不一致怎么办?
工具会合并数组中所有元素的类型,生成联合类型(如 (string | number)[]),尽量贴合真实数据。
null 字段会推断成什么?
值为 null 时会推断为 null 类型。若你的字段可能为空,建议拿到非空样例再生成更精确的类型。
interface 和 type 有什么区别?
多数场景两者可互换。勾选「使用 type」会输出 type 别名,适合需要联合类型或交叉类型扩展的场景。
生成后还能调整吗?
当然,输出是标准 TS 代码,复制到项目后可自由重命名、加注释或改成可选字段。也可配合本站「JSON 格式化」先整理数据。
有浏览器兼容性要求吗?
本工具兼容所有现代浏览器(Chrome、Firefox、Edge、Safari),无需安装任何插件或扩展。
可以离线使用吗?
首次加载后,部分功能在离线状态下仍可使用。页面资源加载后,核心逻辑完全在浏览器本地运行,不依赖网络。