JSON 转 TypeScript 类型

根据 JSON 示例生成 TypeScript 类型定义,处理嵌套对象、数组、联合类型和可选字段,可自定义根类型名称,结果需按业务规则核对。

核心处理在浏览器本地完成,不主动上传输入内容;本组工具不加载第三方广告。请勿使用真实生产密钥测试。

输入

未选择文件

UTF-8 编码,最多 1 MiB。导入后点击处理。

结果

准备就绪。

使用说明与限制

从接口示例生成类型的步骤

  1. 粘贴一份合法 JSON,或导入 UTF-8 JSON 文件。对象、数组及标量均可作为根值,但 JavaScript 对象字面量、注释和尾随逗号不属于 JSON。
  2. 填写根类型名称,如 UserResponse。名称须以英文字母、下划线或 $ 开头,不能使用 class 等保留字。
  3. 点击“处理”,复制结果到 TypeScript 项目,或下载 .ts 文件;随后按接口文档核对必填性、可空性和业务枚举。

示例:数组里只出现过一次的字段

{"items":[{"id":1,"note":"示例"},{"id":2}]}

使用默认根名称时生成:

export interface Root {
  items: {
    id: number;
    note?: string;
  }[];
}

note? 表示样例数组中部分对象缺少这个字段,不表示字符串内容可以省略任意字符,也不等同于 note: string | null。

类型推断的规则

  • 对象中的嵌套结构会继续展开;字段名如 user-name 会加引号,避免生成非法标识符。
  • 同一字段出现数字和字符串时生成联合类型,如 number | string;出现明确的 null 会纳入联合类型。
  • 空数组没有足够样例,生成 unknown[]。根值不是普通非空对象时,可能生成 export type,而不是 interface。
  • 仅凭 "2026-11-14" 只能判断为字符串,不会生成 Date;仅凭一个状态值也不会替你确定完整枚举。

怎样让结果更接近真实接口?

尽量提供多条有代表性的记录,包含缺失字段、空值和不同业务分支。此工具只生成编译期类型,不会验证运行时数据,也不会生成校验函数。类型嵌套最多 20 层;超大整数请在原始 JSON 中用字符串承载,避免精度损失。

文本长度上限为 1,048,576 个 UTF-16 编码单元,约相当于同数量的常见中英文字符;emoji 可能占两个或更多单元。支持文件导入的工具另有 1 MiB 文件大小上限,文件需为 UTF-8 编码。