生成的 C# 代码包含什么?
JSON 样例
{
"id": 42,
"active": true,
"items": [{"sku": "A-01"}]
}基础值、布尔值和对象数组都会被推断。
生成方向
public class OrderResponse
{
public int Id { get; set; }
public bool Active { get; set; }
public List<OrderResponseItemsItem> Items { get; set; }
}对象会生成 class,数组根据第一个元素生成 List<T>。
生成后需要补充的 .NET 规则
| 接口数据情况 | 工具输出 | 项目中应补充什么 |
|---|---|---|
snake_case 或连字符字段 | 转换为可用的 C# 属性名 | 如保留原始 JSON 名,按框架添加 JsonPropertyName 等映射。 |
| 字段偶尔不存在 | 依据当前样例生成属性 | 按 nullable reference types 和接口文档调整可空性或默认值。 |
| 日期、金额、ID | 通常是 string、int 或 double | 改为 DateTime、decimal、long 或值对象。 |
| null 或空数组 | 只能生成通用或基础类型 | 按领域规则明确实际类型和初始化策略。 |
nullable 开关实际影响什么?
打开开关会在生成代码顶部加入 #nullable enable。这能让编译器开始检查可空引用,但它不会凭一份 JSON 样例准确推断“字段是否一定存在”。可空性仍然要由接口契约决定。
不要因为工具生成了 class 就跳过反序列化测试。至少用一份真实响应跑一次
System.Text.Json 或你项目使用的序列化器。常见问题
- 会生成 JsonPropertyName 或 Newtonsoft.Json 特性吗?
- 不会。当前页面只生成基础模型。字段名与 JSON 不一致时,请在项目中按所用序列化框架补充特性或命名策略。
- 为什么属性名会和原 JSON 不完全一样?
- C# 属性需要合法标识符,工具会将特殊字符整理为可用名称。若接口要求保留原字段名,请补充显式映射。
- 数组中的对象结构不同怎么办?
- 工具只参考第一个数组元素。若数组是多态数据,需要手动设计基类、派生类或自定义转换器。