🧬

JSON 转 TypeScript

从样例 JSON 自动推断生成 TypeScript 接口,处理嵌套对象、数组合并与可选字段,可自定义根接口名。适合给后端接口补类型定义、改造 any 为强类型,前端与全栈对接新 API 时省去手写 interface。

2 个接口
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),无需安装任何插件或扩展。

可以离线使用吗?

首次加载后,部分功能在离线状态下仍可使用。页面资源加载后,核心逻辑完全在浏览器本地运行,不依赖网络。