JSON 代码生成
TS · Java · Go · 类型推断
代码生成
就绪
ABOUT
关于 JSON 代码生成
根据 JSON 样本自动推断字段类型,生成各语言的结构体或 interface 定义。
类型定义是前后端协作的契约载体。从真实 JSON 样本生成 TypeScript / Java / Go 类型,比手写 interface 快一个数量级,也能避免遗漏新增字段导致的运行时错误。
DEEP DIVE
深入了解 JSON 代码生成
接口对接时,前后端需就数据结构达成一致。手动编写 TypeScript interface、Java POJO 或 Go struct 既慢又易漏字段。JSONSort 代码生成从 JSON 样本自动推断类型,数秒产出可粘贴到 IDE 的类型定义。
推断规则:字符串 → string、数字 → number/int、布尔 → boolean、数组 → []Type、对象 → 嵌套结构。null 值会标记为 optional 或 union 类型,贴近真实 API 的稀疏数据特征。
静态类型推断无法替代 OpenAPI/Swagger 的语义描述(format: date-time、enum 约束等)。生成代码应视为「90 分起点」:在 IDE 中将 string 改为 Date、添加 enum、标记 optional 等微调不可避免。
FEATURES
核心能力
TypeScript
生成 interface 与 type 定义,含嵌套与数组类型。
Java
生成 POJO class,含 getter 风格字段声明。
Go
生成 struct 与 json tag,符合 Go 惯例。
类型推断
根据 JSON 值自动选择合适类型,null 处理为 optional。
嵌套支持
深层嵌套对象递归生成子类型/内部类。
本地推断
API 响应样本不上传,保护接口数据结构隐私。
嵌套类型命名
深层对象自动生成子 interface / inner class 名称。
数组元素推断
根据首个非 null 元素推断 []Type,多样本可合并类型。
HOW TO USE
使用步骤
-
1
粘贴 JSON 样本
-
2
选择目标语言(TS / Java / Go)
-
3
复制生成的类型代码
-
4
根据输出语言选项切换 TS / Java / Go 等目标
-
5
将生成代码粘贴到 IDE,按项目规范微调命名与类型
WORKFLOW
典型工作流
从导入数据到导出结果的完整流程,帮助团队统一 JSON 代码生成 的使用方式。
收集样本
从 Network 复制真实 API 响应,尽量覆盖各字段类型。
选择语言
TS 用于前端,Java/Go 用于服务端 DTO 起点。
复制到 IDE
粘贴后运行 formatter,调整 Date/enum 等语义类型。
纳入 CI
样本变更时重新生成,Diff 类型定义捕获 breaking change。
USE CASES
适用场景
前端开发
Swagger 未及时更新时,从实际响应生成 TS 类型。
后端开发
Java/Go 服务端根据 JSON 样本生成 DTO 起点。
全栈工程师
前后端共用同一份 JSON 样本,各自生成语言类型。
开源贡献
为第三方 API 编写 SDK 时快速生成类型骨架。
SDK 作者
为第三方 REST API 快速生成客户端类型骨架。
Monorepo 维护
前后端共享 JSON 样本,各自生成语言绑定。
TIPS
使用技巧
- 使用真实 API 响应而非手工编造样本,类型更准确。
- 样本中尽量包含各字段的非 null 代表值,避免全部 optional。
- 数组元素类型基于第一个元素推断,确保样本数组元素结构一致。
- 生成后在 IDE 中微调:Date 字符串可改为 Date 类型等。
- 嵌套过深时可先用路径提取了解结构,再截取子树生成。
- 与 Mock 工具配合:生成类型后,用 Mock 生成符合类型的测试数据。
- 合并多次 API 响应样本(成功/失败/分页)可得到更完整 union 类型。
- 字段名含 - 或空格会自动 sanitise,生成后搜索确认。
- Go struct tag 已含 json 字段名,直接用于 encoding/json。
- 生成后与 Mock 工具联动,确保 Mock 数据符合类型结构。
LOCAL VS ONLINE
本地 vs 在线工具
JSONSort 坚持纯前端架构,以下对比说明为何本地化工具更适合处理开发数据。
TROUBLESHOOTING
常见误区与排查
实际使用中容易遇到的问题及建议处理方式,减少反复试错的时间。
字段全 optional
建议:样本值含 null;用不含 null 的代表记录替换。
数组类型不对
建议:数组元素结构不一致;统一 schema 或拆分为 union。
reserved word 冲突
建议:生成器已加后缀;仍请 IDE 检查编译错误。
嵌套过深难读
建议:用路径提取截取子树分别生成子类型。
FAQ
常见问题
能生成 Python dataclass 吗?
当前支持 TS / Java / Go。Python 可作为后续扩展。
字段名是 reserved word 怎么办?
生成器会自动加后缀或转义,如 class → class_。
union 类型怎么推断?
同字段出现多种类型时,生成 union(如 string | number)。
any 类型太多怎么办?
样本中 null 过多;补充含具体值的响应再生成。
能生成 Zod schema 吗?
当前 TS/Java/Go。Zod 可从 TS 类型二次转换或使用专门工具。
数据会上传到服务器吗?
不会。JSONSort 所有工具均在浏览器本地运行,您的输入内容不会发送到任何后端服务器。
需要注册或安装吗?
不需要。打开页面即可使用,无需账号、无需下载客户端,也支持 PWA 离线缓存。
支持多大的文件?
取决于浏览器内存,通常可流畅处理数 MB 级别的数据。超大文件建议先拆分或使用合并清理工具。