返回博客

JSONTypeScript开发工具在线工具

JSON 转 TypeScript 指南:粘贴 JSON 快速生成 interface

JSON 转 TypeScript 怎么做?本文介绍用在线工具从 JSON 推断 interface 与 type 的方法,覆盖嵌套对象、数组与空值处理,以及生成后需要人工校对的关键点。

写完接口联调的代码,常常要为一长段 JSON 手写 TypeScript 类型:字段十几个、嵌套三四层,手打一遍又慢又容易抄错。把 JSON 粘进工具直接生成 interface 草稿,是最省事的做法。这篇文章讲清楚 JSON 转 TypeScript 的原理与边界,并用在线工具演示完整流程。

转换是怎么工作的

工具做的事情其实很简单:解析 JSON、推断每个字段的类型、输出 TypeScript 声明。它不猜业务含义,只按结构生成草稿:

JSON 值 生成结果
字符串 string
数字 number
布尔值 boolean
对象 拆分为独立 interface
空数组 unknown[],需要补充具体类型
结构不同的数组 生成后需人工补充联合类型

三步生成 TypeScript 类型

  1. 打开 转换工具,粘贴一个 JSON 对象或数组
  2. 设置根类型名(默认 Root),点「生成类型」
  3. 复制结果,结合实际接口数据人工校对

嵌套对象会拆成多个独立 interface;数组作为根类型时输出 type 别名。整个过程在浏览器本地完成,JSON 不会上传。

生成后必须人工校对的地方

工具擅长起稿,不擅长猜业务规则。生成之后重点检查三处:

  • 可选字段:工具不知道哪个字段可能缺失,null 和可选字段要自己补 ?
  • 联合类型:同一数组里结构不同的对象,需要手动补充 union
  • 字段语义number 可能是 id、时间戳或金额,类型正确不代表含义正确

一段 JSON 的生成结果大致长这样(实际命名以工具输出为准):

json
{"id": 1, "name": "Ada", "active": true, "profile": {"city": "Shanghai"}}
ts
interface Root { id: number; name: string; active: boolean; profile: Profile; }
interface Profile { city: string; }

数组和嵌套的实际例子

工具对数组的处理值得单独看。比如接口返回一个用户列表:

json
[{"id": 1, "name": "Ada"}, {"id": 2, "name": "Lin", "role": "admin"}]

数组作为根类型会输出 type 别名,元素推断为对象;当两个元素结构不一致(第二个多了 role)时,工具按首个元素生成,你需要把 role 补成可选字段或联合类型。这是在线转换器最常见的校对点,也是它和手写类型的主要差别:生成结果永远是草稿,业务规则要靠人补。

谁适合用这个转换器

  • 前端对接新接口时快速起稿,再人工细化
  • 后端返回结构复杂,手写容易漏字段、写错层级
  • 和校验配合使用:先用 JSON 格式化工具 确认 JSON 合法、结构清晰,再生成类型

常见问题

会处理嵌套对象吗?

会。嵌套对象会拆分为独立 interface,方便复用。

空数组会生成什么?

unknown[]。工具没有上下文推断元素类型,需要根据实际数据补充。

生成结果可以直接用吗?

建议先校对。可选字段、联合类型和字段语义这三处最值得检查。

数组根类型会生成什么?

type 别名。元素结构不一致时按首个元素推断,其余字段需要人工补充。

和手写类型比,转换工具有什么劣势?

不擅长可选字段、泛型和精细联合类型;优势是快、不容易漏字段。两者结合最稳:工具起稿,人工校对。

数据会上传吗?

不会。处理在浏览器本地完成。

小结

这个转换器解决的是起稿问题:把重复手写类型的时间省下来,把精力留给校对。这个工具在美国开发者中的搜索兴趣过去一年在持续上升,2026 年 5 月到达峰值(Google Trends 数据)。配合 接口 JSON 排查流程 一起用,日常联调能省不少事。

本文目录