JSON 转 C# 类
样例 JSON 生成 C# 类,PascalCase 与 JsonPropertyName 自动补。
请粘贴一份样例 JSON(对象或数组)。
原因:类型定义从样例数据反推,样例为空无从推断。
建议:贴接口响应示例、配置文件或测试数据均可,对象数组最佳。
生成结果(本地推断,零上传)
粘贴样例 JSON 后,类型定义会显示在这里。
使用说明
这个工具解决什么问题
.NET 项目对接接口,照着响应示例手写实体类:属性名转 PascalCase、逐个写属性访问器、键名对不上还要补 JsonPropertyName 特性,嵌套对象逐层拆类,using 指令漏了编译报错。这个工具从 JSON 样例直接生成整套 C# 类:嵌套类独立输出,数组转 List 集合,特性与 using 自动处理,输出即能编译。与站内 TypeScript、Python、Go、Java 版本共用同一推断内核,同一份样例各语言类型划分一致。纯浏览器本地运行,样例数据不上传。
核心能力
属性自动 PascalCase:命名对齐 C# 惯例,生成即可用。特性按需补:原名非 PascalCase 时补 JsonPropertyName(System.Text.Json 口径),对应 using 一并生成。数组转 List:元素类型自动推断,嵌套结构逐层建类。混合类型兜底:object 收场并给出警告。本地推断:样例在浏览器内解析,数据不出本机。
使用建议
用字段最全的响应样例做输入,类名默认 Root,可改成业务名;生成后把警告里 object 兜底的字段改成具体类型或自定义 JsonConverter;样例里没出现的可空字段,建议按需改成可空类型再定型;改完放进项目跑一次真实反序列化,确认 JsonPropertyName 与键名全部对上再提交。
常见问题
为什么属性名和 JSON 键名不一样?
C# 惯例属性用 PascalCase,工具自动转换;原名不是 PascalCase 时(如 userName、user_name)补 JsonPropertyName 特性指向原键名,反序列化才能对上。原名本身就是 PascalCase 则不加注解,保持代码干净。
用的是哪个 JSON 库的口径?
System.Text.Json,即 .NET 当前的主流内置库。JsonPropertyName 特性来自 System.Text.Json.Serialization,对应的 using 指令工具会按需自动生成。
数组转成什么类型?
List 集合,元素类型由数组元素推断,不同元素的结构自动取并集;空数组推断为占位类型,建议按业务替换成具体类型。
混合类型的字段怎么办?
以 object 兜底并给出警告——同一字段既有字符串又有数字时,C# 没有现成类型可表达,需要按业务改成具体类型或自定义转换器。
相关工具
JSON 转 Go Struct
样例 JSON 生成 Go struct 与 json tag,混合类型 any 兜底。
JSON 转 Java POJO
样例 JSON 生成 Java 类与 getter/setter,Jackson 注解可选。
JSON 转 Python 模型
样例 JSON 生成 Pydantic BaseModel 或 dataclass,别名自动补。