支持嵌套对象、对象数组;数组会取第一个元素推断元素类型。
非法字符与下划线会自动去掉并转成帕斯卡命名,如 user_info → UserInfo。
所有处理都在你的浏览器本地完成,JSON 数据不会上传。字段类型由样本值推断:null 与空数组无法确定具体类型,会生成 Object / any / interface{} 等宽泛类型,请按实际接口补充。
生成结果将显示在这里。
同一份 JSON 在不同语言中生成的类型对照如下。
| JSON 值 | Java | TypeScript | Go | PHP |
|---|---|---|---|---|
字符串 "abc" | String | string | string | string |
数字 18 / 1.5 | Double | number | float64 | float |
布尔 true | Boolean | boolean | bool | bool |
数组 [1,2] | List<Double> | number[] | []float64 | array |
| 嵌套对象 | 新建类 + 字段引用 | 新建 interface | 新建 struct | 新建 class |
| 字段命名 | 驼峰 userName,含 getter/setter | 驼峰 userName | 帕斯卡 UserName,带 json tag | 驼峰 $userName |
类型是“按样本猜”的,生成后请对照真实接口复核。
| 问题 | 说明 |
|---|---|
| 数组只看第一个元素 | JSON 数组本身不携带元素类型,工具取第一个元素推断:[1, 2] 得到数字数组,[{"id":1}] 得到对象数组。若数组元素结构不一致,请到生成结果中手动调整。 |
| null 与空数组 | null 无法判断真实类型,生成 Object / any / interface{} / mixed;空数组 [] 生成 List<Object> / any[] / []interface{} / array。 |
| 数字统一按浮点 | JSON 不区分整数与小数,为避免大整数/带小数接口不兼容,Java 用 Double、Go 用 float64;确定是整数的字段(如 id)可自行改为 Long/int64。 |
| 键名转换 | user_name、user-name、userName 都会识别为单词并转成驼峰/帕斯卡;含特殊字符的 TS 字段会自动加引号;Go 的 json:"原键名" tag 保证反序列化不受字段名转换影响。 |
| 重名类处理 | 不同层级出现同名对象时(如两处都有 addr),第二个起自动追加数字后缀(Addr2)避免类名冲突,可按业务重命名。 |
⚠️ 本工具仅在浏览器本地把 JSON 文本转换为类代码,不会上传、保存你粘贴的任何数据。
字段类型完全依据样本值推断,null、空数组、异构数组等情况下只能给出宽泛类型;生成代码适合作为开发脚手架,请务必对照真实接口文档复核类型与命名后再用于项目。
对接接口时,后端给的常常只是一段 JSON 示例,手写实体类既慢又容易漏字段。
这个工具把粘贴 JSON → 生成类代码压缩到一次点击:
① 四种语言:Java(含 getter/setter)、TypeScript interface、Go struct(含 json tag)、PHP 类;
② 类型推断:自动识别字符串、数字、布尔、数组与任意层级的嵌套对象,每个嵌套对象生成一个独立类;
③ 命名规范:蛇形 user_name、连字符 user-name 自动转驼峰 userName / 帕斯卡 UserName;
④ 根类名可自定义,切换语言即时重新生成;
⑤ 一键复制或下载为对应后缀(.java / .ts / .go / .php)文件。
需要注意:类型由样本推断,数组只看首元素、null 给宽泛类型,生成后请对照接口文档复核。
处理流程:
① 解析 JSON:先严格校验 JSON 格式,格式错误时给出具体报错位置提示,不会生成半截代码;
② 递归分析:深度遍历对象与数组(超过 12 层会提示),字符串/数字/布尔映射为语言基础类型,每个嵌套对象登记为一个类,对象数组取首元素作为元素类型;
③ 命名转换:按下划线、空格、大小写边界拆分单词,再组合成驼峰或帕斯卡命名,重名类自动追加数字后缀;
④ 代码生成:按目标语言模板输出——Java 带 import java.util.List 与完整 getter/setter,TS 输出 export interface,Go 输出对齐的 struct 与反引号 json tag,PHP 输出带 @var 注释的属性;
⑤ 导出:一键复制或下载为对应语言后缀的文件。
OrderResp;不填则默认使用 Root。Double/float64),null 无法知道真实类型(给 Object/any/interface{}),数组只取第一个元素判断元素类型。生成结果是开发脚手架,请对照接口文档把 id 这类字段改成 Long/int64、把 null 字段改成真实类型。[{"id":1,"name":"x"}] 并把根类名填成 User,就会生成包含 id、name 字段的 User 类。空数组 [] 没有元素可分析,只能得到一个空的根类。userName,Go 使用大驼峰 UserName(导出字段要求)并附带 `json:"user_name"` tag,保证 JSON 反序列化时仍能对应原键名。含连字符等非法标识符字符的键名在 TS 中会自动加引号,如 "a-b": number;。addr → Addr),当第二个同名类出现时会自动追加数字后缀(Addr2、Addr3),保证同一文件内类名唯一。生成后可以按业务语义把它们重命名成更具体的名字。审核通过后就会展示在留言板上,稍安勿躁~
还没有留言,来抢沙发吧!