关键信息
- 分类
- 开发与 Web
- 输入类型
- textarea, text, checkbox
- 输出类型
- text
- 样本覆盖
- 4
- 支持 API
- Yes
概览
本工具可以将 JSON 数据快速转换为强类型的 C# 类(class)。它支持自动推断嵌套对象类型、生成符合 C# 规范的 PascalCase 属性命名,并自动添加 `JsonPropertyName` 特性,帮助 .NET 开发者快速完成数据模型的反序列化配置。
适用场景
- •在 .NET 项目中对接第三方 API,需要根据返回的 JSON 响应快速构建对应的 C# 数据传输对象(DTO)时。
- •需要将复杂的嵌套 JSON 结构反序列化为强类型的 C# 对象,避免手动编写繁琐的类定义时。
- •在使用 System.Text.Json 进行序列化时,需要为不规范的 JSON 键名自动生成带有 `JsonPropertyName` 特性的 C# 属性时。
工作原理
- •在输入框中粘贴或输入需要转换的原始 JSON 数据。
- •设置根类名称(默认为 Root),并根据需要勾选是否启用“可空属性”选项。
- •工具会自动解析 JSON 结构,推断字段类型(如 string、int、List 等)及嵌套对象,并即时生成对应的 C# 类代码。
使用场景
用户案例
1. 快速对接第三方用户 API
后端开发工程师- 背景原因
- 正在开发一个 .NET 8 系统的后端模块,需要对接外部用户管理系统的 API,该 API 返回一个包含用户基本信息和地址信息的 JSON。
- 解决问题
- 手动编写对应的 C# 实体类不仅效率低下,而且容易因为拼写错误导致反序列化失败。
- 如何使用
- 将 API 返回的 JSON 粘贴到“JSON 输入”框中,将“根类型名称”设置为 `UserProfile`,勾选“可空属性”以防某些字段缺失,然后点击转换。
- 示例配置
-
{"rootName": "UserProfile", "optionalFields": true} - 效果
- 获得了一组包含 `UserProfile` 和 `Address` 的 C# 类,属性均采用 PascalCase 命名,并带有 `[JsonPropertyName]` 特性,且所有属性均为可空类型。
2. 转换复杂嵌套的商品列表 JSON
软件架构师- 背景原因
- 需要在项目中集成一个电商平台的商品列表接口,返回的 JSON 结构非常复杂,包含多层嵌套的规格、价格区间和图片列表。
- 解决问题
- 嵌套层级深,手动定义内部类和集合类型非常繁琐。
- 如何使用
- 将商品列表 JSON 粘贴至输入框,设置根类名为 `ProductListResponse`,保持“可空属性”为未勾选状态以生成非空属性。
- 示例配置
-
{"rootName": "ProductListResponse", "optionalFields": false} - 效果
- 自动生成了 `ProductListResponse`、`ProductItem`、`PriceRange` 等多个嵌套类的定义,数组字段被正确推断为 `List<T>` 集合。
用 Samples 测试
json相关专题
常见问题
这个工具支持嵌套的 JSON 对象吗?
支持。工具会自动解析嵌套的 JSON 对象和数组,并为其生成独立的 C# 子类。
转换后的属性命名规则是什么?
属性名会自动转换为 C# 推荐的 PascalCase 命名法,同时通过 `JsonPropertyName` 特性保留原始的 JSON 键名映射。
什么是“可空属性”选项?
勾选该选项后,生成的 C# 属性类型将使用可空类型(例如 string? 或 int?),适用于 JSON 中可能缺失或为 null 的字段。
支持哪些 .NET 版本的 JSON 序列化库?
生成的类默认带有 `System.Text.Json.Serialization` 命名空间下的 `JsonPropertyName` 特性,适用于 .NET Core 及更高版本的内置序列化器。
如果 JSON 数组中包含混合类型,工具会如何处理?
工具会尝试推断最通用的基类类型,或将其推断为 object 类型以确保代码能够正常编译。