JSON 转类型生成器
粘贴一段 JSON 样本,就能得到你所用语言的类型定义,从 TypeScript 接口、Go 结构体,到 Rust、Swift、Kotlin、Python、C# 等二十多种语言。工具会读取数据的结构,推断每个字段的类型,处理嵌套对象、数组和可选字段,输出可以直接放进代码库的干净声明。输入和输出两侧都用真正的代码编辑器,较大的数据也能保持可读,生成的代码带语法高亮。整个过程都在浏览器本地运行,机密的接口响应不会离开你的设备。
- 把一段 JSON 样本转成二十多种语言可直接使用的类型
- 根据数据结构推断嵌套对象、数组、可选字段与联合类型
- 选择目标语言和根类型名称,再一键复制结果
- 两侧都是带语法高亮的代码编辑器,能从容处理大段输入输出
- 完全在浏览器本地运行,私有接口响应绝不会上传
功能简介
照着接口响应手写类型既慢又容易出错。这个工具直接读取 JSON 帮你生成声明,让类型层始终忠实于它所描述的数据。
- 01
多种目标语言
用一段 JSON 样本即可生成 TypeScript、Go、Rust、Swift、Kotlin、Java、C#、Python、Dart、Ruby、PHP 等多种语言的类型。
- 02
结构推断
嵌套对象会变成嵌套类型,数组会推断出元素类型,时有时无的字段会被标记为可选。
- 03
合理的类型识别
数字、布尔、字符串、null 和混合值都会映射到最接近的类型;当一个字段出现多种形态时,会生成联合类型。
- 04
两侧都是真编辑器
输入和输出都用带语法高亮、折叠和顺滑滚动的代码编辑器,再大的响应也能保持可读。
- 05
干净的纯类型输出
可以只保留类型声明,也可以连引擎能生成的辅助代码一起输出,按项目需要来选。
- 06
本地且私密
引擎只加载一次后便在浏览器本地运行,来自内部或未发布接口的 JSON 不会离开你的设备。
如何使用
几秒钟内,把一段原始接口响应变成编辑器能识别的类型声明。
- 01
把一段有代表性的 JSON 样本粘进输入编辑器,或载入示例看看效果。
- 02
选择目标语言,比如 TypeScript、Go 或 Rust。
- 03
设置根类型名,让顶层类型在代码里读起来自然。
- 04
在输出编辑器里查看生成的类型;如果某个字段应当可选,就调整 JSON。
- 05
复制结果,粘贴进你的项目。
功能说明
类型生成器只有在输出正确、可直接粘贴时才有用,因此工具专注于跨语言的忠实推断和干净的声明。
- 用一段 JSON 样本支持二十多种目标语言
- 自动推断嵌套对象类型、数组元素类型和可选字段
- 当一个字段在样本中出现多种类型时,会识别为联合类型
- 可命名根类型,让顶层声明贴合你的代码
- 提供仅类型模式,输出不含多余辅助代码的干净声明
- 同时高亮 JSON 输入和所选语言的生成结果
- 在可滚动、可折叠的代码编辑器里处理大段数据,而不是溢出页面
- 清晰提示无效 JSON,便于在生成前先修正输入
- 首次加载生成引擎时显示进度,之后转换即时完成
- 完全在浏览器本地运行,机密响应绝不会上传
适合哪些场景
现实工作大多从一段 JSON 响应而非现成 schema 开始。从响应生成类型,能让代码与数据保持一致,省去大量小心翼翼的誊写。
-
为接口响应建类型
把一段响应样本变成接口或结构体,让对该端点的调用都能被编译器检查。
-
跨语言客户端
用同一段 JSON 为移动端和后端生成对应模型,让 Swift、Kotlin 和 Go 保持一致。
-
快速熟悉代码库
粘贴一段陌生的数据,先看清它的结构、字段名和嵌套层级,再动手写代码。
-
配置与测试夹具类型
为配置文件或测试夹具生成类型,让它们的结构变化以类型错误的形式暴露出来。
-
数据模型原型
手写一个 JSON 形状,生成模型类的初版,作为后续开发的起点。
-
为无类型代码补类型
从项目已经在处理的响应生成声明,给 JavaScript 或 Python 项目补上一层类型。
支持的语言及其生成结果
一段 JSON 样本会映射成各目标语言里地道的类型。选你项目在用的语言,输出会遵循该语言在命名、可选性和序列化上的惯例。
-
TypeScript
生成带可选属性和联合类型的 interface 与 type,是 Web 和 Node 项目里为 fetch、接口响应标注类型的首选。
-
TypeScript 配 Zod
生成在运行时校验数据的 Zod schema,并由每个 schema 推断出静态类型,让解析与类型保持一致。
-
Go
生成带 json 标签和对应字段类型的 struct,可直接用 encoding/json 进行序列化与反序列化。
-
Rust
生成带 serde derive 属性的 struct,配合 serde_json 即可在 JSON 与类型之间互转。
-
Python
生成带类型注解的类,能被类型检查器和编辑器识别,是 dataclass 或模型对象的干净起点。
-
Java
生成带类型字段和访问器的类,可顺畅对接 Jackson、Gson 等 JSON 绑定库。
-
Kotlin
生成 data class,可选字段用可空类型表示,适合 Android 和服务端的 kotlinx.serialization 或 Moshi。
-
Swift
生成 Codable struct,在 iOS 和 macOS 应用里用 JSONDecoder、JSONEncoder 完成 JSON 编解码。
-
C#
生成带类型属性和特性的类,可在 .NET 项目里配合 System.Text.Json 或 Json.NET 使用。
-
C++ 与 Objective-C
生成描述数据结构的 C++ struct 和 Objective-C 类,用于原生与跨平台代码。
-
Dart
为 Flutter 和 Dart 生成带类型字段的类,作为移动端 JSON 序列化的起点。
-
Ruby、PHP 与 Scala
生成与 JSON 结构对应的 Ruby、PHP 类以及 Scala case class,适用于后端与脚本场景。
-
Elm、Haskell 与 Crystal
为函数式与系统级语言生成 Elm、Haskell 记录以及 Crystal 类型,字段类型均从样本推断。
-
Flow 与 JSON Schema
为 JavaScript 项目生成 Flow 类型注解,并生成描述结构的 JSON Schema 文档,用于校验与文档化。
使用建议
推断的好坏取决于样本,几个习惯能让生成的类型更准确、更易维护。
- 用一份每个可选字段都出现的完整样本,免得引擎把真实字段误判为缺失。
- 如果列表里的对象可能不同,多放几条,方便识别可选字段和联合类型。
- 给根类型起一个清晰的名字,对应它代表的端点或实体。
- 留意被标为联合或宽松类型的字段,它们往往指向值得整理的不一致数据。
- 把输出当作起点,把生成的嵌套类型重命名为有意义的名称。
- 接口变化时重新生成,而不是手改类型任由其与数据脱节。
- 共享的模型文件优先用仅类型输出,需要辅助代码时单独放置。
- 如果 JSON 来自日志或复制的文本,先校验一遍,多余的逗号或注释会导致解析失败。
边界与注意事项
工具是从示例推断类型的,因此有几条边界需要留意。
- 它从你提供的样本推断结构,样本里没出现的字段不会出现在结果中。
- 它读的是 JSON,而非 JSON Schema 或 OpenAPI,因此不强制格式、取值范围或必填规则。
- 嵌套类型的名称是自动生成的,通常需要改成贴合你业务的命名。
- 数字按语言惯例标注类型,未必能像你的接口那样区分整数和浮点数。
- JSON 里的日期是字符串,日期处理取决于具体语言,可能需要再调整。
- 过大的样本会生成很大的类型文件,最好裁剪成你实际会用到的部分。
常见问题
关于从 JSON 生成类型、以及在真实项目里使用结果的常见问题。
它能生成哪些语言?
二十多种,包括 TypeScript、Go、Rust、Swift、Kotlin、Java、C#、C++、Dart、Python、Ruby、PHP、Scala、Objective-C、Elm、Haskell、JavaScript、Flow 和 JSON Schema。
JSON 会被上传到什么地方吗?
不会。生成引擎在你第一次打开工具时加载到浏览器,之后在本地运行,你的 JSON 不会发送到任何服务器。
为什么首次使用会加载一会儿?
代码生成引擎是一个较大的库,所以会先带进度条加载一次。之后转换都是即时的,不会再次加载。
它如何判断哪些字段是可选的?
当某个字段在样本的部分条目中缺失时,就会被当作可选。请提供完整样本,避免你依赖的字段被误判为可选。
仅类型这个选项有什么用?
它让输出只保留类型声明。关闭后,对于支持的语言,引擎还会一并生成解析、序列化等辅助代码。
它能处理对象不一致的数组吗?
可以。当数组元素不同时,引擎会推断出一个合并类型或联合类型,让结果仍能描述样本里见到的每一项。
为什么有些字段类型很宽松?
宽松或联合类型通常意味着样本里该字段出现了多种形态,往往指向值得在源头清理的不一致数据。
它会校验 JSON 吗?
它会解析 JSON,无效时给出错误提示,但不强制必填字段、取值范围或字符串格式之类的 schema 规则。
更多相关工具
生成类型只是处理 JSON 的其中一步。当你需要把同一份数据换成别的格式,或先整理一遍,其余数据工具可以接着用。