用途:为 .NET 项目配置 System.Text.Json 源生成,实现兼容 Native AOT、免反射的 JSON 序列化,序列化代码在编译期生成,错误可在编译期暴露。
主要能力:扫描 ASP.NET Core 项目中的 Minimal API(MapGet、MapPost 等)与控制器特性([HttpGet] 等),提取请求/响应类型;查找 JsonSerializer.Serialize/Deserialize 调用;检查已有 JsonSerializerContext 避免重复;创建 {ProjectName}JsonContext.cs 并添加 [JsonSerializable] 类型(含 List<T>、数组);配置 ASP.NET Core 的 ConfigureHttpJsonOptions 使用该上下文;可选枚举转字符串、属性命名策略(CamelCase 等)、空值忽略。
使用方式:先运行 dotnet-json-polymorphic 技能确保多态类型已配置;确认作用范围(整个解决方案或特定项目);按提示选择枚举、命名策略与空值处理;生成上下文后执行 dotnet build 验证。AOT 完整兼容可在 Directory.Build.props 或项目文件中设置 <JsonSerializerIsReflectionEnabledByDefault>false</JsonSerializerIsReflectionEnabledByDefault>。
适用场景:准备 Native AOT 编译、消除反射序列化开销、提升启动性能、希望序列化错误在编译期发现的项目。
限制:完整选项需 .NET 8 或更高,基础源生成需 .NET 6+;JsonStringEnumConverter<TEnum> 的 AOT 支持需 .NET 8+;多态类型仅支持基于元数据的生成;多个上下文可用 JsonTypeInfoResolver.Combine() 合并。其余细节暂未提供。