Skip to main content
CheckTown
转换工具

JSON 转 C#:从 API 响应生成 .NET 类

发布于 阅读约 5 分钟
本文目录

为什么要从 JSON 生成 C# 类?

在 .NET 或 Unity 中使用 REST API 时,你需要强类型的 C# 类来反序列化 JSON 响应。手动编写这些类既繁琐又容易出错,对于嵌套很深、拥有数十个属性的 API 数据尤其如此。JSON 转 C# 生成器会分析 JSON 结构,并自动生成开箱即用的类定义。

这在快速原型开发时尤为宝贵。你粘贴一段示例 API 响应,即可获得结构完美的 C# 类,随即就能使用类型化数据进行开发,而无需与动态对象或字典查找纠缠。生成的代码遵循 C# 约定,并为你选择的框架包含正确的序列化特性。

输出模式与序列化选项

生成器支持多种输出格式,以契合你项目的编码风格和 .NET 版本。每种模式都能生成符合惯例、无需修改即可编译的 C# 代码。

  • 类 vs 记录——为较旧的 .NET 项目生成传统的可变类,或为不可变的数据传输对象生成带内置值相等性的 C# 9+ 记录
  • System.Text.Json——.NET Core 3.1+ 内置的现代高性能序列化器,使用 [JsonPropertyName] 特性进行属性映射
  • Newtonsoft.Json——广泛使用的 Json.NET 库,使用 [JsonProperty] 特性,在传统的 .NET Framework 和 Unity 项目中仍占主导地位

免费试用 —— 无需注册

将 JSON 转换为 C# →

C# 命名约定与注解

C# 遵循严格的命名约定,与 JSON 中常见的 camelCase 或 snake_case 不同。生成器会自动应用这些转换,同时通过序列化特性保留原始的 JSON 属性名。

  • PascalCase 属性——所有生成的属性名都会转换为 PascalCase(例如 user_name 变为 UserName),遵循 Microsoft 的 .NET 命名准则
  • 注解模式——每个属性都会包含相应的序列化特性([JsonPropertyName] 或 [JsonProperty]),将 PascalCase 属性映射回原始的 JSON 键名
  • 类型推断——生成器会从 JSON 值推断 C# 类型:字符串变为 string,数字变为 int 或 double,布尔值变为 bool,null 值则变为可空引用类型

常见问题解答

生成器如何处理可空引用类型?

当某个 JSON 值为 null 时,生成器会生成可空引用类型(用 string? 而非 string)。这遵循 C# 8+ 的可空引用类型约定,有助于你在编译期而非运行期捕获潜在的空引用异常。

对于 JSON 数组,我应该使用 List<T> 还是数组?

生成器默认使用 List<T>,因为它提供了更丰富的功能(Add、Remove、Contains),也是 C# 代码库中最常见的集合类型。如果你在性能关键场景中需要数组,或 API 约定要求固定大小的集合,可以手动更改生成的类型。

我可以生成记录而不是类吗?

可以。记录输出模式会生成带 init-only 属性的 C# 9+ 记录类型。记录非常适合数据传输对象,因为它们提供了不可变性、基于值的相等性,以及使用位置参数的简洁语法。它们需要 .NET 5+ 或 C# 9+ 才能编译。

相关工具