JSON 转类型

由 JSON 自动生成 TypeScript、Go、Python、Rust、JSON Schema 类型定义。遍历数组所有元素合并推断可选字段与联合类型,纯前端不上传。

纯前端处理,数据不上传

TypeScript interface

工具介绍

对接接口时,拿到一段 JSON 后照着手敲 TypeScript interface、Go struct、Python 模型、Rust 结构体,字段一多既枯燥又易错。自动化既省去重复劳动,也让前后端结构更一致。

本工具由示例 JSON 实时生成多种语言类型:支持 TypeScript interface / type、Go struct、Python dataclass / Pydantic、Rust serde 与 JSON Schema。它递归生成子类型,并采用 quicktype 风格的合并推断——遍历数组所有元素而非只看首个:字段只在部分元素出现即标记可选,同名字段类型不一致则生成联合类型;根为数组或基本类型也生成正确别名。

各语言按惯例命名:Go / Rust 导出大写并保留 json tag、serde rename,Python 转 snake_case 映射原始键,还可切换 null 可选与整数 / 浮点区分。全部在浏览器本地完成,JSON 不上传。

使用方法

  1. 把接口返回的 JSON 粘贴到左侧(根可以是对象,也可以是数组)。
  2. 选择目标语言:TypeScript interface / type、Go struct、Python dataclass / Pydantic、Rust serde 或 JSON Schema。
  3. 按需调整选项:根类型名、是否把 null/缺失字段视为可选、是否区分整数与浮点。
  4. 右侧实时生成,工具会遍历数组所有元素合并字段、推断可选与联合类型并递归生成子类型。
  5. 点击复制,把类型定义粘贴到你的代码中。

常见问题

支持哪些目标语言?
目前支持 TypeScript interface、TypeScript type、Go struct、Python dataclass、Python Pydantic、Rust(serde)以及 JSON Schema(draft-07)。每种语言按各自惯例命名:Go/Rust 字段导出并保留 json tag / serde rename,Python 字段转 snake_case 并用别名或注释映射原始键。
数组里元素字段不一致怎么办?
工具会遍历数组的所有元素合并字段,而不是只看第一个。某字段只在部分元素出现 → 标记为可选(TS 的 `?`、Go 指针 + omitempty、Rust Option、Python Optional);同名字段类型不一致 → 生成联合类型(TS `a | b`,不支持联合的语言会合理降级为 interface{} / serde_json::Value / Any)。
根是数组也能转吗?
可以。当根为数组时,工具会推断出元素类型并生成顶层别名(如 TS `type Root = RootItem[]`、Go `type Root []RootItem`),根为基本类型时也会生成对应别名。
可选字段和 null 是怎么处理的?
“null 视为可选字段”开启时,值为 null 或在部分元素中缺失的字段都按可选/可空表达;关闭时则保留显式的可空类型(如 TS `T | null`)。是否区分整数与浮点也可切换(影响 Go int64/float64、Rust i64/f64、Python int/float、JSON Schema integer/number)。
数据会上传吗?
不会。JSON 解析、类型推断与代码生成全部在浏览器本地完成,数据不上传任何服务器,处理含敏感字段的接口数据也安全。

相关工具