JSON 转 C# Class / Record
从 JSON 推断 C# Record 或 Class,支持嵌套模型、可空类型和序列化属性
JSON 与数据
🔒 100% 本地运行 — 你的数据不会离开当前页面由 ToolsKit 编辑团队维护•最近更新:2026年8月23日•最近复核:2026年8月23日
工具说明
JSON 转 C# Class / Record 工具从一个 JSON 对象或非空对象样例数组推断可复用模型。它会合并多个样例以识别可选属性、嵌套对象、List、整数、浮点数、布尔值、字符串和只有 null 的未知字段。输出可选择位置 Record 或可变 Class、文件作用域 Namespace、可空引用类型,并为 System.Text.Json 或 Newtonsoft.Json 生成精确属性映射。JSON 名称与生成的 C# 标识符不完全一致时会显式添加序列化属性,因此 snake_case 和特殊名称不依赖全局命名策略也能正确映射。推断结果只是起点而不是 API Contract;日期、Decimal、Enum、Dictionary、自定义 Converter、验证属性、required 成员和多态 Payload 仍需开发者评审。
场景配方
01
用两个 API 响应样例快速建立 DTO
目标:接入 C# 客户端前先暴露可选响应字段
- 采集两个已脱敏响应对象,覆盖常用与可选字段,并放入同一个 JSON 数组。
- 开启可空引用类型,按目标项目使用的 Serializer 生成 Class。
- 检查只有 null 的值和领域字符串,提交前把 object、string、long 或 double 替换为批准的 DTO 类型。
结果:得到可评审的 DTO 基线,其中可选字段与精确 JSON 属性映射均已显式标注。
常见问题
可以同时生成 Record 和 Class 吗?
可以,可选择紧凑的不可变位置 Record,或带 get/set 的可变 Class。
如何识别可选字段?
对象数组包含多个样例时,任何样例中缺失的属性都会推断为可选,并可能得到可空类型。
为什么会添加 JsonPropertyName 属性?
当生成的 C# 属性名与 JSON 键不一致时,它用于保留精确映射,包括 snake_case、标点和保留字。
支持 System.Text.Json 和 Newtonsoft.Json 吗?
支持,可选择任一属性体系;项目已有自己的命名策略时也可以不生成属性。
会推断 DateTime、Decimal 或 Enum 吗?
不会,字符串保持 String,普通数字使用 Long 或 Double;领域类型需要人工检查。
JSON 会发送到服务器吗?
不会,解析、模型推断、代码生成、复制和下载都在本地完成。
继续浏览