🧩

JSON 转 TypeScript 接口

粘贴 JSON 自动推断出 TypeScript interface,含嵌套对象与数组

说明:类型是从这份 JSON 推断出来的,不是 JSON Schema。数组里元素结构不一致时会生成联合类型,字段名不是合法标识符时会加引号。

使用说明

JSON 转 TypeScript 接口使用说明\n\n## 功能简介\n拿到一份接口返回的 JSON,要手写 TypeScript 类型很费时间。这个工具直接读 JSON 结构,递归推断出嵌套的 interface。\n\n## 使用方法\n1. 把 JSON 粘贴到输入框,点「填入示例」可以先看一个复杂例子\n2. 填好根接口名(默认 Root),选 `interface` 或 `type` 别名\n3. 如果字段可能缺失,勾上「字段可选」给每个字段加 `?`\n4. 点「生成 TypeScript」,结果按引用顺序输出,子类型在前、根类型在后\n5. 点「复制结果」复制走\n\n## 注意事项\n- 类型是从这一份 JSON 推断出来的:字段为 `null` 时只会得到 `null`,缺字段也看不出来。要更准确请用多份样本或手写补充\n- 数组里元素结构不一致时会生成联合类型,例如 `(A | B)[]`\n- 空数组只能推断出 `unknown[]`,需要你自己补类型\n- 字段名不是合法标识符时会用引号包起来,符合 TypeScript 语法

常见问题

数组里的对象类型不一致怎么办?

工具会为每个不同结构生成一个接口,并把数组元素类型写成联合类型,例如 `(User | Admin)[]`,你可以在生成后按实际业务收窄。

为什么 null 字段的类型是 null?

因为只有这一份数据,无法判断它将来会不会是字符串或数字。建议把真实数据里出现过的类型都补上,或手动改成 `string | null`。

支持生成 Go 或 Java 的类型吗?

目前只生成 TypeScript。如果想先看看结构,用这个工具推断出的嵌套接口名,改写成其它语言的结构体也不难。