跳到主内容
UniKit

JSON 转代码

根据 JSON 自动推断类型,生成 TypeScript interface、Java class、Go struct、Python dataclass、Rust struct、C# class 或 Swift struct。

浏览器本地运行所有计算都在你的浏览器里完成,数据不会离开本机。

生成的代码
export interface RootOwner {
  email: string;
}

export interface Root {
  id: number;
  name: string;
  tags: string[];
  owner: RootOwner;
}
推断出的类型
RootOwner
  • emailstring
Root
  • idnumber
  • namestring
  • tagsstring[]
  • ownerRootOwner

这个工具能做什么

  • 拿到接口返回的 JSON 后,一次性生成 TypeScript interface、Java class、Go struct、Python dataclass、Rust struct、C# class 或 Swift struct,省去手写类型的时间。
  • 给前端项目补类型:把接口样例粘进来生成 interface,直接替换掉 any,编译期就能发现字段写错。
  • 后端对接第三方接口时,先按样例生成 DTO,再按项目规范微调命名与注解。
  • 做技术选型或写文档:同一份 JSON 分别生成多种语言的类型定义,方便对比各语言的数据建模写法。

示例

输入

目标语言 TypeScript,根类型名 Root,JSON 为 {"id":1,"name":"UniKit","tags":["tools","web"],"owner":{"email":"ada@example.com"}}

输出

export interface RootOwner {
  email: string;
}

export interface Root {
  id: number;
  name: string;
  tags: string[];
  owner: RootOwner;
}

嵌套对象会单独生成一个以路径命名的类型(RootOwner),数组推断成 string[]。Java/Go/Python/Rust/C#/Swift 会把整数与小数区分开,例如 id 是 int64/i64/Int,而 Go 还会带上 json 标签。

常见问题

类型是怎么推断出来的?

只看你给的这一份 JSON:数字统一推断为数值类型(Java/Go/Python/Rust/C#/Swift 会区分整数与小数),字符串推断为 string,布尔推断为 bool/boolean,null 推断为可空类型。它不会去猜你的数据库或接口文档,所以样例最好覆盖各种情况。

数组元素类型不一致会怎样?

同一数组里出现不同类型(例如 [1,"a"])时,无法确定元素类型,会退化成 any/unknown 之类的宽松类型。想拿到精确类型,请让样例数组里所有元素结构一致;数组里缺字段的对象,缺的那个字段会被标记为可选。

根节点是数组可以吗?

不行,根节点必须是 JSON 对象,否则会提示「根节点必须是 JSON 对象」。遇到数组时可以先用 JSON 数组分割工具取出一个元素,或者手工包一层 {"list": […]} 再生成。

生成的代码能直接编译吗?

大多数情况可以直接用,但请按项目规范微调:Java 的 public class 需要放在同名文件里、Go 的 package 名、Rust 需要 serde 依赖、Swift 用 struct 而非 class。生成的类型只是起点,注释和校验逻辑仍要自己补。

数据会上传吗?

不会。解析与代码生成全部在浏览器里完成,页面不发起网络请求,断网可用,接口数据不会被上传或记录。

关键词:jsonto codetypescriptjavagopythonrustcsharpswiftinterfacestructdataclass类型推断生成代码

同类工具