JSON 转代码类型

把 JSON 或 JSON Schema 直接生成为 TypeScript、Go、Java、Python 等 26 种语言的类型定义,带注释和多余尾逗号也能读,全部在浏览器里完成。

JSON 转代码类型是什么

把一段 JSON 或一个 JSON Schema 直接生成为代码里的类型定义:TypeScript 的 interface、Go 的 struct、Java 的 POJO、Python 的 dataclass、C# 的 class,一共 26 种语言。照着一坨接口响应手抄字段最枯燥,还得判断哪里是数组、哪个字段可空,这里贴进去就出来。

所有计算都在你的浏览器本地完成,输入的内容不会上传到服务器。

怎么用JSON 转代码类型

  1. 把接口返回的 JSON 粘进左边输入框,// 注释和对象结尾多余的逗号都能直接读
  2. 右侧默认生成 TypeScript interface,用「目标语言」下拉框换成 Go、Java、Python 等 26 种之一
  3. 根类型名默认 Root,可以改成项目里实际在用的 User、OrderVO 这类名字
  4. 展开「高级选项」调该语言的细节:只生成类型还是连序列化代码一起生成、包名、缩写词大小写、数组写成 array 还是 list
  5. 右上角复制,或点下载存成 .ts / .go / .java 文件

示例

输入

{"id": 1, "tags": ["a"], "meta": {"ok": true}}

输出

export interface Root {
    id:   number;
    tags: string[];
    meta: Meta;
}

export interface Meta {
    ok: boolean;
}

嵌套对象自动拆成独立 interface,数组推断成 string[]

常见问题

支持 GraphQL schema 吗?

不支持。底层用的 quicktype-core 26.0 已经把 GraphQL 输入移除了,这一页只吃 JSON 和 JSON Schema。

带注释的 JSON 能直接贴吗?

能。tsconfig.json 那种 // 和 /* */ 注释、对象或数组结尾多余的逗号,都会先被清掉再解析。

会上传我的数据吗?

不会。生成全部在这个页面里完成,不请求任何服务器,数据不出浏览器。

生成的代码能直接放进项目吗?

类型定义部分可以直接用。带序列化代码的语言(Java、C#、Swift 等)会引用对应框架的包,用之前看一眼文件头的 import。

小提示

  • 贴进去的如果是一个 JSON 数组,生成的类型名会在根类型名后面拼上 Item,取的是数组元素的形状。想要干净的单个实体,贴一个元素进去更直接
  • 字段值全是 null 时推断不出类型,会退化成 any 或 interface{}。拿一条有真实值的样本生成更准
  • 「只生成类型」默认是开着的。关掉之后 TypeScript 会连运行时类型校验函数一起生成,一个八字段的对象能出两百行
  • 数字类型按样本的值域推断:样本里都是小整数就出 int / number,出现 1.5 才会出 double / float

同类JSON 工具