JSON 转 C# 类
从 JSON 生成 C# 类:PascalCase 属性、[JsonPropertyName] 特性、可为 null 的引用类型和 List<T> 集合。免费且私密。
使用 System.Text.Json 特性和可空引用类型(string?、long?)。
完全在浏览器中运行,您的数据不会被上传。
相关工具
查看全部什么是 JSON 转 C#?
将 JSON 示例转换为适用于 System.Text.Json 的 C# 类。每个属性都是 PascalCase,带有保留原始键名的 [JsonPropertyName("…")] 特性,并在示例包含 null 或缺失值的地方使用可为 null 的类型。
如何使用 JSON 转 C#
- 将 JSON 示例粘贴到 JSON 输入中(或点击加载示例/打开文件)。
- 设置根类型名称(默认为
Root)。 - 复制生成的 C# 代码,或下载为文件。
示例
{"id":1,"name":"A","tags":["x"]} using System.Collections.Generic;
using System.Text.Json.Serialization;
public class Root
{
[JsonPropertyName("id")]
public long Id { get; set; }
[JsonPropertyName("name")]
public string Name { get; set; } = string.Empty;
[JsonPropertyName("tags")]
public List<string> Tags { get; set; } = new();
} 何时使用 JSON 转 C#
适用于 .NET HTTP 客户端、ASP.NET 模型或测试数据。若使用 Newtonsoft.Json,请把特性换成 [JsonProperty];对于金额类数值,可考虑把 double 改为 decimal。
JSON 转 C# 的工作原理
程序会递归遍历示例,每个位置都会收集见到过的类型。对象数组会合并为一个类型:在部分元素中缺失的键变为可选,在某处为 null 的键变为可空,整数与小数混合会变为浮点类型,其他混合了多种类型的情况则回退为动态类型。嵌套对象成为各自命名的类型(键名的 PascalCase,数组键取单数:orders → Order),名称冲突时添加数字后缀。C# 输出将整数映射为 long,小数映射为 double,字符串映射为 string,布尔值映射为 bool,数组映射为 List<T>,嵌套对象映射为各自的类,动态值映射为 object?。可空或可选的值带有 ?;不可为 null 的字符串初始化为 string.Empty,列表或对象初始化为 new(),这样在启用可为 null 的引用类型时代码也能干净地编译。
常见用例
- 用 HttpClient 和 System.Text.Json 反序列化 API 响应
- 为 ASP.NET 控制器创建请求/响应模型
- 为 JSON 配置节建立模型
- 为 Azure Function 触发器生成类
常见问题
为什么每个属性都有注解?
该特性即使在 C# 名称不同的情况下也能保留准确的 JSON 键,因此无论命名策略如何,序列化都能往返一致。
为什么用 double 而不是 decimal?
JSON 没有 decimal 类型;double 与解析器产生的结果一致。金额数值请使用 decimal。
能配合 Newtonsoft.Json 使用吗?
可以,把 [JsonPropertyName] 换成 [JsonProperty] 并修改 using 指令即可。