跳到主要内容

JSON 转 C# 类

样例 JSON 生成 C# 类,PascalCase 与 JsonPropertyName 自动补。

本地计算 · 数据不出浏览器
样例 JSON
0 字符1 行0 B

生成结果(本地推断,零上传)

粘贴样例 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,别名自动补。

查看更多格式转换,或浏览全部工具。