从 JSON 到 C# 类
粘贴一段 JSON 示例,即可获得可直接粘贴到 .cs 文件中的 C# POCO 类。工具会选择合适的类型,处理带有额外类定义的嵌套对象,支持可空引用类型,并根据你的项目生成 System.Text.Json 或 Newtonsoft.Json 特性。
如何将 JSON 转换为 C#
-
1
粘贴 JSON
单个示例即可满足需求;提供多个示例可提升对可空性和数组元素类型的推断。
-
2
选择风格
System.Text.Json(.NET 6+)或 Newtonsoft.Json(旧版)。对于 camelCase 的 JSON,会在 PascalCase 属性名上添加 `[JsonPropertyName]`。
-
3
选择目标 C# 版本
C# 10+ 用于记录和文件范围命名空间,C# 8 用于可空引用类型,更早的版本则用于实现最大兼容性。
-
4
复制这些类
一个根类加上针对每种对象形态的嵌套类,全部集中在一个文件中,可直接放入你的项目。
输出示例
对于以下输入:
{ "firstName": "Alice", "age": 30, "emails": ["a@a.com"], "address": { "city": "Madrid" } }
System.Text.Json 输出(C# 10+):
public class User
{
[JsonPropertyName("firstName")]
public string FirstName { get; set; } = default!;
[JsonPropertyName("age")]
public int Age { get; set; }
[JsonPropertyName("emails")]
public List<string> Emails { get; set; } = new();
[JsonPropertyName("address")]
public Address Address { get; set; } = default!;
}
public class Address
{
[JsonPropertyName("city")]
public string City { get; set; } = default!;
}
类型映射
| JSON | C# 类型 |
|---|---|
| 字符串 | string |
| 整数 | int(超过 int.MaxValue 时使用 long) |
| 数字(小数) | double(若选择则为 decimal) |
| 布尔值 | bool |
| null | object?(或与同级字段合并) |
| ISO-8601 日期 | DateTime(或 DateOnly) |
| GUID 形式的字符串 | Guid |
| 字符串数组 | List<string> |
| 对象 | 嵌套类 |
特性选项
- System.Text.Json(
[JsonPropertyName("foo")]),推荐用于 .NET 6+ 和新项目。 - Newtonsoft.Json(
[JsonProperty("foo")]),用于旧项目,或当你需要 Newtonsoft 专有功能时。 - 无,属性名与 JSON 键完全一致(仅当 JSON 键已是 PascalCase 时才有效)。
常见错误
- 对可能溢出的字段使用
int。 如果你的 JSON 中的值超过int.MaxValue,请使用long。生成器在遇到较大的值时会自动提升类型。 - 计算属性缺少
[JsonIgnore]。 如果你向生成的类中添加辅助属性,请用[JsonIgnore]标注它们,否则它们会在序列化输出时被写出。 - 忘记使用与区域性无关的解析。
decimal字段应使用CultureInfo.InvariantCulture反序列化;System.Text.Json 默认如此,Newtonsoft 需通过全局设置实现。 - 仅凭单个示例就信任生成器。 可空性和数组元素类型是根据生成器所看到的数据推断出来的。请务必将可空注解与你实际的 API 行为进行核对。
常见问题
对于基于 .NET 6+ 的新项目,请使用 System.Text.Json,它更快、内置于框架,并且现已支持 Newtonsoft 几乎所有功能。对于旧项目,或当你需要 Newtonsoft 的特定功能(自定义契约解析器、JObject、动态处理)时,则使用 Newtonsoft。
在 C# 10+ 中,记录(record)是不可变 DTO 的惯用写法,能提供值相等性和简洁的语法。当你需要可变性或与旧代码兼容时,类更合适。本工具允许你选择其中任意一种。
如果你的项目使用可空引用类型(C# 8+),在任一示例中被观察到为 null 的字段会变为 string?、int? 等。若不使用可空引用类型,则仅对值类型标注可空性(例如 int?)。
由不同对象形状混合而成的数组无法在强类型 C# 中直接表示。本工具会推断出一个通用基类,或(作为回退)使用 object;对于混合数组,通常最好重新设计 JSON。
相关工具
Webpack 配置生成器
为纯 JavaScript、React 或 Vue 项目生成 webpack 5 的 webpack.config.js:支持 TypeScript、Babel、CSS 或 Sass、图片、HtmlWebpackPlugin、开发服务器,并给出 npm install 命令。
PHP 格式化工具
为简单的 PHP 代码片段添加换行和 2 或 4 个空格的缩进。请检查结果:本工具不是 PHP 解析器,也不会执行 PSR-12 规范。
OpenAPI 验证器
将 OpenAPI 或 Swagger 文档以 JSON 或 YAML 粘贴进来,检查其核心结构:版本字段、info 对象和 paths,并给出清晰的错误和警告。
CSS 加载动画生成器
用纯 CSS 创建圆形旋转图标:设置直径、边框粗细、强调色和旋转速度,实时预览后一键复制可直接使用的 CSS。无需 SVG 或 JavaScript。
ASCII 表参考
完整 ASCII 表,覆盖 0 到 127;列出每个代码的十进制、十六进制、八进制、二进制值和 HTML 数字字符引用写法,包括 NUL、LF、DEL。
文本文件编码转换器
在 UTF-8、UTF-16、Latin-1、Windows-1252 等编码之间转换文本,修复乱码字符。
此工具还提供其他语言版本
- JSON a Clase C# [ES]
- JSONからC#クラスへ [JA]
- تحويل JSON إلى فئة C# [AR]
- JSON vers classe C# [FR]
- JSON para Classe C# [PT]
- Từ JSON đến lớp C# [VI]
- JSON ke Kelas C# [ID]
- JSON을 C# 클래스로 [KO]
- JSON till C#-klass [SV]
- JSON naar C#-klasse [NL]
- JSON ถึงคลาสใน C# [TH]
- JSON zu C# Klasse [DE]
- JSON na klasę C# [PL]
- JSON to C# Class [EN]
- JSON in classe C# [IT]
- JSON в класс C# [RU]
- JSON'ten C# Sınıfına [TR]