JSON 转类型定义

概述

JSON 类型生成器将 JSON 数据自动转换为 TypeScript、Rust、Kotlin、Python 或 JSON Schema 类型定义,免去手动逐字段编写类型声明的重复工作,粘贴 JSON 后实时在右侧编辑器中生成对应代码。

JSON 输入到类型输出示例

输入以下 JSON:

{
  "user": {
    "id": 123,
    "name": "Alice",
    "roles": ["admin", "viewer"]
  }
}

选择 TypeScript 模式,自动生成:

export type Root = {
  user: User;
};

export type User = {
  id: number;
  name: string;
  roles: string[];
};

选择 Rust 模式则生成带 #[derive(Serialize, Deserialize)] 注解的 Struct。选择 Python 模式生成 Pydantic BaseModel 类定义。

输出模式说明

工具支持 8 种输出模式:

  • TypeScript(interface):生成多个 interface 声明,适合大型项目
  • TypeScript(单一类型别名):使用 type alias 内联嵌套类型,适合快速使用
  • Rust:生成带序列化派生宏的 struct,依赖 serde
  • Kotlin(Jackson):生成带 @JsonProperty 注解的 data class
  • Kotlin(kotlinx.serialization):生成带 @Serializable 注解的 data class
  • Python(Pydantic):生成 Pydantic v2 BaseModel 类
  • JSON Schema:生成标准 JSON Schema 格式,可用于接口文档
  • Shape(内部表示):查看工具内部的类型分析中间结果

高级选项

属性名格式:将 JSON 中的 snake_case 键自动转换为目标语言约定的命名方式,支持 camelCase、PascalCase、snake_case、SCREAMING_SNAKE_CASE、kebab-case 等。

类型名称:自定义根类型的名称,默认为 Root,建议改为与业务相关的名称(如 UserResponse)。

展开路径:使用 JSON Pointer 语法(如 /items/-/data)指定需要提升到顶层的嵌套路径,- 作为数组通配符,适合处理有固定结构的分页响应。

收集额外属性:启用后,生成的类型允许声明字段之外的额外键(TypeScript 对应 [key: string]: unknown),适合结构可能扩展的场景。

类型推断规则

工具根据 JSON 值的类型进行静态推断:数字不区分整数与浮点数(统一推断为 number/i64/f64 视目标语言而定),null 值会被推断为可选字段,数组中混合类型会生成联合类型,空数组推断为 unknown[]。推断结果以当前 JSON 样本为准,如样本数据不代表真实业务范围,建议手动补充调整。