工具怎样从 JSON 推断类型?
| JSON 样例值 | TypeScript | C# | Java |
|---|---|---|---|
"张三" | string | string | String |
42 | number | int | Integer |
true | boolean | bool | Boolean |
[{"id":1}] | Array<Item> | List<Item> | List<Item> |
{"city":"昆明"} | 独立 interface | 独立 class | 独立 class |
生成代码前,先给工具一份“完整样例”
类型生成器只能看见当前输入中出现的字段。若样例恰好没有 avatar、nextPage 或某个嵌套对象,结果中就不会包含它。建议使用字段最完整的一次接口响应,而不是只截取一条调试片段。
- 先用 JSON 校验确认样例合法。
- 根名称使用业务名,例如
OrderDetailResponse,不要长期保留RootObject。 - 生成后根据接口文档手动处理可选字段、日期、金额、字典结构和枚举。
哪些情况需要手动改代码?
空数组
空数组没有元素样例,工具只能生成通用类型。请按接口文档指定元素类型。
null 值
单个 null 无法说明原本应该是字符串、对象还是数字。请按字段定义补充准确类型。
日期和金额
JSON 中通常都是字符串或数字。生成后请替换成项目实际使用的日期、金额或 Decimal 类型。
字段命名
接口可能使用 snake_case 或连字符字段名。请按项目序列化规则补充属性映射或重命名。
按语言查看细节
通用生成页解决“先有一个类型定义”的问题。针对不同语言的空值、命名和框架约束,请继续查看语言专题页。
常见问题
- 顶层输入为什么必须是对象?
- 根类型需要稳定名称。若接口直接返回数组,建议先按接口语义包装成对象,例如
{"items":[...]},再生成类型。 - 生成的代码能直接提交到项目吗?
- 不建议直接提交。它适合快速起草模型,提交前仍应按接口文档、序列化框架和团队命名规范审阅。
- 为什么数组只参考一个元素?
- 工具用数组第一个元素推断类型。若数组中不同项结构不一致,需要你手动设计联合类型、继承结构或通用字段。