编码解码哈希加密格式化时间转换开发生成文本处理网络工具其他工具
首页 / 格式化 / JSON转TypeScript接口

JSON转TypeScript接口

JSON 一键生成 TS 接口定义

输入 JSON
TypeScript 接口

这个工具能做什么

这个工具做的事情很直接:把一段 JSON 粘贴进来,它就会解析结构并生成对应的 TypeScript interface 定义。日常开发里,后端接口返回的 JSON 往往字段又多又深,手动照着响应体一个个敲 interface 既枯燥又容易漏字段、写错类型,接口一改还得同步维护。json转typescript 这一步交给工具自动完成,你拿到的是可以直接粘进 .ts 文件的类型声明,省去了 json转接口 过程中的机械劳动,也减少了人眼比对带来的低级错误。

它的工作方式是先用 JSON.parse 把文本解析成 JavaScript 对象,再递归遍历每个键值对,依据值的运行时类型做映射:数字给 number、字符串给 string、布尔值给 boolean,null 因为无法从单个值判断真实类型,统一记为 any。遇到数组会取元素类型输出成 T[] 形式;遇到嵌套对象,则不会内联展开,而是拆分成一个独立的 interface,并以该字段的键名作为接口名,这样多层嵌套也能保持每层结构清晰、可复用。根接口默认命名为 Root,你可以自行改成更贴合业务的名字,整个 json转ts 的推断都基于你提供的这份样本数据。

最常见的用法是对接后端或第三方 API。比如你从接口拿到一段用户信息响应,里面嵌套了 profile、address、订单列表等结构,直接贴进来就能一次性得到 User、Profile、Address 等多个 interface,稍作重命名就能用在请求封装和组件 props 上。再比如手头只有一份 Mock 数据或文档里的示例 JSON,用它做一次 ts接口生成 得到初稿,再手动补充注释和可选标记,比从零手写快得多,尤其适合字段几十上百个的大响应体。

需要留意的是,类型推断完全基于你贴进来的这一个样本,工具看到的是值而不是语义。所以时间戳会被判成 number、日期字符串会被判成 string,它无法知道你想用 Date;同理,字段是否可选(?)、是否为联合类型、数字是否其实是枚举,这些都超出了单样本能推断的范围,需要你在生成后手动调整。空数组和 null 由于缺少可采样的信息,得到的类型会偏宽泛(如 any),也建议人工收紧。和 quicktype 这类支持多语言、多样本合并与可选性推断的重型工具相比,这个工具更聚焦 json to interface 单一场景,胜在轻量、即贴即用,全部转换在浏览器本地完成、不上传数据。

JSON转TypeScript接口是一个免费的在线工具,打开网页就能用,不用下载也不用注册。平时大家搜的“json转typescript”、“json转ts”、“json转接口”,说的都是这个。

常见使用场景

使用方法

  1. 把内容粘贴到输入框(生成类工具直接设置选项)。
  2. 按需要选择选项,点操作按钮。
  3. 结果出现在下方,点「复制结果」即可带走。

常见问题

JSON 里的 null 和空数组会被转成什么类型?
null 会统一记为 any,因为单个 null 值无法判断它真正的类型。空数组由于没有元素可供采样,同样推断不出具体的元素类型,通常需要你手动指定,例如把 any[] 改成 string[]。
生成的 interface 名称能改吗?根接口叫什么?
根接口默认命名为 Root,可以在转换前自定义成任意名字。嵌套对象会各自拆成独立 interface,并以对应的字段键名作为接口名,生成后按需重命名即可。
它会自动识别可选字段(?)或联合类型吗?
不会。推断只依据你提供的单份 JSON 样本,所有出现的字段都被当作必选、单一类型。可选标记(?)和联合类型(如 string | null)需要你在结果里手动补上。
时间戳、日期这类字段为什么被识别成 number 或 string?
工具是按值的运行时类型来推断的,看到的是数字或字符串本身,无法知道它在业务上代表时间。想用 Date 或更精确的类型,需要在生成结果里自行替换。
粘贴的 JSON 会被上传到服务器吗?
不会。解析和类型生成全部在浏览器本地用 JavaScript 完成,数据不会离开你的电脑,贴入敏感的接口响应也不必担心外泄。

相关工具

查看全部「格式化」工具 →

相关名词解释