JSON 转 TypeScript
新从 JSON 示例生成 TypeScript 接口,支持嵌套类型。
Runs entirely in your browser. Nothing is uploaded.
一键将 JSON 转换为 TypeScript
这款 JSON 转 TypeScript 转换器可从 JSON 样本生成即用的接口、类型或类,让您再也不必为 API 响应手写类型。将 payload 粘贴到左侧,右侧会立即出现格式正确、缩进整洁的 TypeScript — 复制它,或下载为 .ts 文件。
这是一个快速、免费、无需注册的替代方案:单步完成 JSON 转 TypeScript 接口,完全在浏览器中运行,嵌套对象、数组和联合类型均自动推断。无文件大小限制,无每日使用配额,数据始终留在您的设备上。
接口、类型或类 — 您来选择
使用输出切换开关在 interface、type 别名或 class 之间切换。接口模式为默认模式,输出 export interface Root { … };类型模式生成 export type Root = { … },适用于偏好别名的代码库;类模式在 export class 中声明字段。相同的 JSON 驱动全部三种模式,几秒钟内即可用您自己的数据进行比较。
您可以重命名根节点、开关 export 关键字,选择会被记住供下次使用 — 将此工具打造为灵活的 TypeScript 类型生成器,而非单一格式转换器。
嵌套对象、数组和联合类型的智能推断
引擎遍历您的 JSON,为每个对象构建一个命名接口,从其键名命名嵌套接口,并对数组元素进行单数化处理 — orders 数组变为 Order[]。相同的结构会去重为单个接口,混合类型数组合并为联合类型,如 (string | number)[]。
开启 枚举检测,重复出现的字符串值会被推断为字面量联合类型 — 包含 "已发货" 和 "待处理" 的状态列变为 "待处理" | "已发货",而非宽泛的 string。这种精确性使输出看起来像是手工编写的。
可选字段、null 和只读字段的正确处理
真实的 API 数据往往杂乱,因此转换器会如实处理。将 API 响应转换为 TypeScript 时,仅出现在数组某些项中的键会用 ? 标记为可选,您来决定如何处理 null:保留为显式的 | null 联合类型,或启用 null → 可选,将 zip: string | null 转换为 zip?: string。
readonly 开关为每个属性添加 readonly 修饰符,适用于不可变模型。这些选项组合使用,可让生成的 JSON TypeScript 类型完全符合您的项目规范。
与 quicktype、json2ts 和 MakeTypes 的对比
quicktype.io 是多语言生成的最全面选项 — 支持 Python、Go、C#、Kotlin 以及 TypeScript 之外的众多语言。这种广度意味着其 TypeScript 输出有时包含 quicktype 运行时助手和额外样板代码。它还在自己的服务器上处理您的 JSON,这对机密 payload 来说至关重要。json2ts.com 更简单,可生成基本接口,但缺少枚举检测、readonly 支持和 null 处理选项。
MakeTypes 生成带有运行时解析的 TypeScript 类,适合需要内置验证的场景,但会增加大量代码开销。UtiloKit 转换器生成零运行时占用的纯类型 — 只需您的代码所需的接口或类型别名,完全在浏览器中运行,无需上传服务器,无需账号。
设计即隐私 — 您的 JSON 永不离开浏览器
每次转换都在您的标签页中使用 JavaScript 在本地完成。您的 JSON 从不上传到服务器、存储或共享 — 离线也能正常工作,适合处理机密 payload、内部 API 和生产数据。收藏这款 JSON 转 TypeScript 转换器,随时需要类型时使用。
宽松的解析器甚至接受带有 // 注释、尾随逗号和单引号字符串的 JSON-ish 输入,因此可以直接从编辑器粘贴 JavaScript 对象字面量并获得有效输出。无需任何额外步骤。
Frequently asked questions
如何将 JSON 转换为 TypeScript?
将您的 JSON 粘贴到输入面板(或点击示例加载样本),对应的 TypeScript 会立即出现在输出面板中。例如,{"id": 1, "name": "小明"} 会变为 export interface Root { id: number; name: string; }。点击复制或下载 .ts 将类型直接添加到您的项目中。
如何从 JSON 生成 TypeScript 接口?
将输出设置保留为 Interface(默认),每个 JSON 对象都会成为独立的 export interface。设置根名称字段以控制顶层名称。例如,{ "id": 1, "name": "小明" } 配合根名称 User 生成 export interface User { id: number; name: string; }。嵌套对象会自动转换为各自命名的接口。
接口和类型别名有什么区别?
两者描述相同的对象结构 — 使用 Interface / Type / Class 切换选择您代码库偏好的方式。Interface 模式输出 export interface Root { … },可通过声明合并重新打开和扩展;Type 模式输出 export type Root = { … },还可以表达联合类型和原始类型;Class 模式输出带声明字段的 export class Root { … }。
如何处理可选或 null 字段(? / | null)?
两个开关控制这一点。'可选(?)用于缺少的键'将对象数组中某些项缺少的属性标记为可选。'null → 可选'将 zip: string | null 等可空字段改写为 zip?: string;关闭以保留显式的 | null 联合。组合使用以匹配团队的 null 处理风格。
在这里粘贴 JSON 安全吗?
是的。转换完全在客户端进行:您的 JSON 由在浏览器标签页中运行的 JavaScript 解析并转换为 TypeScript,从不上传、记录或发送到任何服务器。您可以断开互联网连接,工具仍然正常工作。
字符串枚举检测是如何工作的?
开启"检测字符串枚举",重复出现的字符串列(如"已发货"和"待处理")会被推断为字面量联合类型 "待处理" | "已发货",而非普通的 string。这使生成的类型更加精确和实用。
可以从 API 或 Swagger 响应生成类型吗?
可以 — 粘贴来自 API 的真实 JSON 响应,工具会推断出即用的接口,可直接连接到 fetch 或 axios 调用,实现自动补全和类型安全。对于 Swagger/OpenAPI 端点,复制示例响应体(JSON,而非 schema 文档)并转换即可。
Related tools
查看全部工具JSON ⇄ CSV 转换
在 JSON 数组与 CSV 之间互转,自动处理引号转义。
XML 格式化
在浏览器中美化、压缩并校验 XML。
SQL 格式化
美化与压缩 SQL 查询,支持关键字大小写与子句换行。
CSV 查看器
以清晰表格查看、排序并搜索 CSV 或 TSV 文件,全程在浏览器中完成。
Statistics Calculator
Calculate mean, median, mode, standard deviation, variance and more from a data set.
Matrix Calculator
Add, subtract, multiply matrices and compute determinant, inverse and transpose for 2×2–4×4 matrices.