C#

JSON 转 C# Class / Record

从 JSON 推断 C# Record 或 Class,支持嵌套模型、可空类型和序列化属性

JSON 与数据
🔒 100% 本地运行 — 你的数据不会离开当前页面
由 ToolsKit 编辑团队维护最近更新:2026年8月23日最近复核:2026年8月23日
JSON
C#

生成的 C# 模型会显示在这里。

工具说明

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# 客户端前先暴露可选响应字段

  1. 采集两个已脱敏响应对象,覆盖常用与可选字段,并放入同一个 JSON 数组。
  2. 开启可空引用类型,按目标项目使用的 Serializer 生成 Class。
  3. 检查只有 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 会发送到服务器吗?

不会,解析、模型推断、代码生成、复制和下载都在本地完成。

继续浏览