JSON 转 TypeScript
粘贴 JSON 即生成 TypeScript 类型:嵌套对象自动提取为独立 interface、数组元素合并为联合类型、缺失字段自动标可选;支持 interface / type / zod schema 三种输出与 camelCase、snake_case 等字段命名,解析失败时给出行列位置。
自动识别对象、数组、数字、布尔、null,数组元素类型会合并为联合类型
嵌套对象自动提取为独立 interface,数组内对象命名为「字段名Item」
| JSON 值 | TypeScript | 说明 |
|---|---|---|
"abc" | string | 双引号字符串 |
1 / 1.5 | number | 整数与小数 |
true | boolean | true / false |
null | null | 输出 null 或合并为可选 |
[1,2] | number[] | 元素类型 + [] |
[] | unknown[] | 空数组输出 unknown[] |
{"a":1} | A | 提取为独立 interface |
[1,"a"] | number | string | 多类型合并为联合 |
使用说明
工具介绍
接口文档里给一段 JSON 样本,前端要 TypeScript 类型,后端可能是 Go 的 struct、Python 的 dataclass、Rust 的 serde 结构,校验层还要 zod。本工具从同一段样本一次生成六种形态,字段名与可选性保持一致,不会出现前端叫 userName、后端叫 user_name 的漂移;嵌套对象自动提成独立类型,数组内对象按「字段名Item」命名。
功能特点
- 六种输出:interface、type 别名、zod schema、Go struct、Rust serde、Python dataclass
- 字段命名四档:保持原样、camelCase、PascalCase、snake_case
- 缺失字段设为可选:样本中未出现的键按可选属性处理,而不是编造值
- 嵌套对象自动抽取为独立类型,数组元素合并为联合类型
- 错误定位到行列:解析失败时给出第几行第几列与上下文片段
- 根类型名可自定义,缩进 2/4 空格可选,支持复制全部与下载 .ts 文件
使用方式
- 把 JSON 粘贴进输入框,或点「示例」载入一段含嵌套与数组的样本
- 填「根类型名」(默认 Root),选择缩进与输出形式
- 按需打开「加 export」「缺失字段设为可选」,选择字段命名规则
- 点「生成类型」,在结果区看到全部类型定义
- 用「复制全部」取走代码,或「下载 .ts」保存为文件
注意事项
- 输出基于单个样本:样本里没有出现的字段不会被推断出来,真实接口请用覆盖最全的一条响应;六种方言共用同一份字段与可选性。
- 同一字段跨记录出现多种类型时合并为联合类型(如 number | string);空数组只能给 unknown[],需按实际数据手工补全元素类型。
- 可选字段输出为 key?: type,语义是键可能不存在,与值为 null 不同;日期字符串保持 string,避免写入时区与格式假设。
- zod 输出需自行安装依赖,Go 输出带 json tag,Rust 输出带 serde 属性但需引入 serde 依赖,Python dataclass 会改写非法标识符并保留原键注释。
- 解析失败给出行列位置便于定位漏逗号;数值统一按 number,不区分 int64 与 float;只做类型生成,不做校验执行与 schema 版本对比。