如何使用System.Text.Json将对象属性序列化为小写?ASP.NET 5 MVC Core场景下的问题解决
解决System.Text.Json序列化属性大小写问题
不用切换到Json.NET,也不用修改类的属性名称,有两个简洁的方案可以解决这个问题:
方案一:全局配置驼峰命名策略
如果你的整个项目都需要将序列化后的JSON属性设为驼峰式(首字母小写),可以在Program.cs中全局配置Json序列化选项:
var builder = WebApplication.CreateBuilder(args); // 添加控制器并配置Json序列化选项 builder.Services.AddControllers() .AddJsonOptions(options => { // 设置属性命名策略为驼峰式 options.JsonSerializerOptions.PropertyNamingPolicy = JsonNamingPolicy.CamelCase; }); var app = builder.Build(); // 其他中间件配置... app.MapControllers(); app.Run();
这样配置后,所有通过System.Text.Json序列化的属性都会自动转换为首字母小写的格式,你的Amount属性就会变成amount,完全符合目标API的要求。
方案二:单独指定属性的JSON名称
如果只是个别属性需要特殊命名,不想影响全局配置,可以给EstoOst类的Amount属性添加JsonPropertyName特性,直接指定序列化后的名称:
首先要引用System.Text.Json.Serialization命名空间,然后修改类:
using System.Text.Json.Serialization; public class EstoOst { [JsonPropertyName("amount")] public decimal Amount { get; set; } }
这样只有这个属性会被序列化为amount,其他属性不受影响,非常灵活。
两种方案都能完美解决你的问题,根据项目需求选择就好啦~
内容的提问来源于stack exchange,提问作者Andrus
相关产品推荐
相关产品推荐

