# JSON 转 C# 类

将 JSON 数据转换为 C# class，包含 PascalCase 属性、JsonPropertyName 特性与嵌套类型推断

> 标准页面: https://elysiatools.com/zh/tools/json-to-csharp

- **分类:** Development

- **关键词:** json, csharp, c#, dotnet, class, 转换, JsonPropertyName

## 概述

本工具可以将 JSON 数据快速转换为强类型的 C# 类（class）。它支持自动推断嵌套对象类型、生成符合 C# 规范的 PascalCase 属性命名，并自动添加 `JsonPropertyName` 特性，帮助 .NET 开发者快速完成数据模型的反序列化配置。

## 输入项

- **JSON 输入** (textarea): { "name": "Alice", "age": 30, "roles": \["admin", "user"\], "address": { "city": "Shanghai", "zip": "200000" } }
- **根类型名称** (text): Root
- **可空属性** (checkbox)

## 适用场景

- 在 .NET 项目中对接第三方 API，需要根据返回的 JSON 响应快速构建对应的 C# 数据传输对象（DTO）时。
- 需要将复杂的嵌套 JSON 结构反序列化为强类型的 C# 对象，避免手动编写繁琐的类定义时。
- 在使用 System.Text.Json 进行序列化时，需要为不规范的 JSON 键名自动生成带有 `JsonPropertyName` 特性的 C# 属性时。

## 工作原理

- 在输入框中粘贴或输入需要转换的原始 JSON 数据。
- 设置根类名称（默认为 Root），并根据需要勾选是否启用“可空属性”选项。
- 工具会自动解析 JSON 结构，推断字段类型（如 string、int、List 等）及嵌套对象，并即时生成对应的 C# 类代码。

## 使用案例

- 快速生成 Web API 接口的请求与响应实体类（DTO）。
- 将本地 JSON 配置文件转换为 C# 强类型配置类。
- 配合 System.Text.Json 快速解析不规则命名的第三方 JSON 数据源。

## 常见问题

### 这个工具支持嵌套的 JSON 对象吗？

支持。工具会自动解析嵌套的 JSON 对象和数组，并为其生成独立的 C# 子类。

### 转换后的属性命名规则是什么？

属性名会自动转换为 C# 推荐的 PascalCase 命名法，同时通过 `JsonPropertyName` 特性保留原始的 JSON 键名映射。

### 什么是“可空属性”选项？

勾选该选项后，生成的 C# 属性类型将使用可空类型（例如 string? 或 int?），适用于 JSON 中可能缺失或为 null 的字段。

### 支持哪些 .NET 版本的 JSON 序列化库？

生成的类默认带有 `System.Text.Json.Serialization` 命名空间下的 `JsonPropertyName` 特性，适用于 .NET Core 及更高版本的内置序列化器。

### 如果 JSON 数组中包含混合类型，工具会如何处理？

工具会尝试推断最通用的基类类型，或将其推断为 object 类型以确保代码能够正常编译。

## 相关工具

- [Data URI 生成器](https://elysiatools.com/zh/tools/data-uri-generator): 将文件转换为 Data URI（Base64 或百分号编码），用于直接在 HTML、CSS 或 Markdown 中内联图片、字体等资源
- [JSON Schema 转 Zod Schema 转换器](https://elysiatools.com/zh/tools/json-schema-to-zod-schema-converter): 将标准 JSON Schema 的 JSON/YAML 定义转换为可直接在 TypeScript 项目中使用的 Zod 运行时校验代码，支持嵌套结构、数组、枚举和常见校验规则
- [JSON 转 Go Struct](https://elysiatools.com/zh/tools/json-to-go): 将 JSON 数据转换为 Go struct 定义，包含 json 标签、导出的 PascalCase 字段和嵌套类型推断
- [JSON 转 Java 类](https://elysiatools.com/zh/tools/json-to-java): 将 JSON 数据转换为 Java class，含 Jackson @JsonProperty 注解、私有字段及 getter/setter
- [JSON 转 Kotlin Data Class](https://elysiatools.com/zh/tools/json-to-kotlin): 将 JSON 数据转换为 Kotlin data class，含 @SerializedName 注解、可空处理与嵌套类型推断
- [JSON 转 Rust Struct](https://elysiatools.com/zh/tools/json-to-rust): 将 JSON 数据转换为 Rust struct，含 serde Serialize/Deserialize 派生、snake_case 字段与 serde rename 属性
- [JSON 转 TypeScript](https://elysiatools.com/zh/tools/json-to-typescript): 将 JSON 数据转换为 TypeScript interface 或 type，支持联合类型、可选字段与嵌套对象推断
- [日志转时序图转换器](https://elysiatools.com/zh/tools/log-sequence-diagram-converter): 把结构化服务日志转换成 Mermaid 或 PlantUML 时序图，并可叠加延迟和错误标注

## 示例

- [Terraform Plan JSON 样本](https://elysiatools.com/zh/samples/terraform-plan-json-samples): 用于依赖可视化和变更审查的 Terraform plan JSON 文件样本，贴近 terraform show -json 输出结构
- [聊天记录 JSON 示例](https://elysiatools.com/zh/samples/chat-transcript-json): 多角色聊天记录的 JSON 示例
- [JSON 示例](https://elysiatools.com/zh/samples/json): JSON（JavaScript 对象表示法）格式示例，从简单到复杂结构
- [富媒体 JSON 示例](https://elysiatools.com/zh/samples/rich-media-json): 常见富文本编辑器（TipTap、Quill、Slate）的 JSON 示例

## 相关内容

- [JSON 到强类型代码生成器](https://elysiatools.com/zh/hubs/json-to-typed-code-generators): 从 JSON 或 schema 证据生成 TypeScript、Go、Rust、Kotlin、Java、C# 与 Zod 校验模型。
