JSON 转 C# 工具
转换器从样例 JSON 自动生成 C# 类,支持 Newtonsoft.Json 与 System.Text.Json 特性,处理嵌套对象与数组类型,适合 .NET 模型层开发,适合配置转换、数据清洗与格式对齐,支持批量处理,浏览器本地运行,免费且无广告。
using System;
using System.Collections.Generic;
using Newtonsoft.Json;
public class Profile
{
[JsonProperty("age")]
public int Age { get; set; }
[JsonProperty("city")]
public string? City { get; set; }
}
public class RootObject
{
[JsonProperty("id")]
public int Id { get; set; }
[JsonProperty("name")]
public string? Name { get; set; }
[JsonProperty("active")]
public bool Active { get; set; }
[JsonProperty("score")]
public double Score { get; set; }
[JsonProperty("tags")]
public List<string>? Tags { get; set; }
[JsonProperty("profile")]
public Profile Profile { get; set; }
}相关工具
关于 JSON 转 C# 工具
JSON 转 C# 代码工具在浏览器本地解析样例 JSON 并自动生成完整的 C# 类定义。字段名转为 PascalCase 命名风格(例如 JSON 中的 user_id 会转成 UserId),嵌套对象拆分为独立 class,数组推断为 List 泛型并额外提供 Array/IEnumerable 选项,支持 nullable 引用类型(C# 8.0+)和可空值类型。可选添加 JsonProperty 特性以兼容 System.Text.Json 和 Newtonsoft.Json 两种序列化框架,保留原始 JSON 键名作为特性参数。生成的代码可直接用于 .NET Web API 模型、EF Core 实体和 REST 客户端 DTO。数据不上传服务器,适合对接 JSON 接口时快速生成 C# 模型类。需要特别留意命名规则:字符串字段默认映射为 string,若接口返回的数字可能是 null,建议开启可空值类型(如 int?),避免运行时反序列化抛 NullReferenceException。
使用方法
- 打开 JSON 转 C# 工具 工具页面
- 根据需求输入或粘贴数据到输入区域
- 查看实时处理结果,使用复制按钮获取输出
使用场景
- 对接 REST 接口 — 把接口 JSON 转成 C# 类,配合 HttpClient/RestSharp 做反序列化。
- EF Core 实体 — 从数据库返回的 JSON 样例生成实体类,用于 Entity Framework Core 映射。
- Unity 配置建模 — 为 Unity 游戏配置 JSON 生成类型安全的 C# 模型,避免运行时反射丢失。
- Azure Function 输入 — 快速生成输入模型类,用于 Azure Function 的 HTTP Trigger。
- 接口文档建模 — 根据接口文档 JSON 示例生成请求响应模型,作为联调与单元测试基准。
常见问题
Newtonsoft 和 System.Text.Json 有什么区别?
Newtonsoft.Json 使用 [JsonProperty] 特性,System.Text.Json 使用 [JsonPropertyName] 特性。按项目依赖选择,.NET Core 3.0+ 默认用 System.Text.Json,老项目或需更灵活特性时用 Newtonsoft.Json。
nullable 引用类型是什么?
C# 8+ 特性,开启后 string 等引用类型字段会标记为可空(如 string?),编译器会对潜在的 null 赋值做警告,帮助在编译期发现空引用隐患。
嵌套对象怎么处理?
每个嵌套对象生成独立的 class,结构清晰可复用,顶层类通过属性引用它们。深层嵌套建议先看清层级再生成。
字段名带下划线会转换吗?
会。默认转成 PascalCase(如 user_id 变 UserId)。若接口依赖原始键名,务必加上 JsonProperty 特性保留映射,否则反序列化可能匹配失败。
如何处理可能为 null 的字段?
开启可空值类型后,数字等值类型字段会生成 int?/double? 等可空版本;引用类型字符串生成 string?。这样反序列化时空值不会被错误赋值。
评论与讨论
评论仅保存在你的浏览器本地,切换设备后不可见。配置 Giscus 后可支持云端评论。