JSON 转 C# · 免费在线生成 C# 实体类
免费在线 JSON 转 C# 工具,粘贴 JSON 一键生成 C# 实体类(属性 get/set,字段名 PascalCase 并自动带 JsonPropertyName 特性),自动推断类型、支持嵌套,适合 .NET 开发。纯浏览器本地生成,不上传、免登录。
- 粘贴接口返回的 JSON(本页已自动预选 C#)。
- 填写根类名,默认 Root。
- 复制生成的 C# 实体类到 .cs 文件。
- 补 using、按需处理可空引用类型与命名空间声明。
属性名和 JSON 键不一致会怎么处理?
C# 约定属性用 PascalCase,而 JSON 键多为 camelCase 或 snake_case。生成时属性名转成 PascalCase,只要与原键不同就自动加 [JsonPropertyName("原键名")],System.Text.Json 依此对应。若两者本来一致则不加冗余特性。
需要引用哪些命名空间?
用到 [JsonPropertyName] 时需 using System.Text.Json.Serialization(注意是 Serialization 子命名空间,不是 System.Text.Json);数组字段的 List<T> 需 using System.Collections.Generic。生成结果不含 using,粘进 IDE 后一键补全。
用 Newtonsoft.Json 还能用吗?
可以,但要把特性换成 [JsonProperty("原键名")],命名空间改为 using Newtonsoft.Json。两套库的特性名字相近但不通用,混用会导致映射不生效。若项目统一用蛇形/驼峰命名策略,也可以删掉特性、改在序列化选项里配置。
开了可空引用类型(nullable)后报警告怎么办?
.NET 6 起新项目默认启用可空引用类型,生成的 string、List<T> 等引用类型属性未初始化会报 CS8618。三种处理方式:加 required 修饰符(C# 11+)、声明成可空(string?)、或给个初始值如 = string.Empty。数值和 bool 属于值类型,不受影响。
能改成 record 吗?
可以。生成的是带 get/set 的 class,适合需要可变的模型。接口响应这类只读数据更适合 record 或 init 访问器,改成 record 后自带值相等语义与解构。把 { get; set; } 换成 { get; init; } 即可获得不可变属性,特性写法不变。