ASP.NET Core:将JSON序列化中Field属性值转为驼峰式
解决AGGrid字段与JSON小驼峰属性不匹配的问题
直接复用官方序列化的驼峰转换规则
ASP.NET Core默认使用System.Text.Json的小驼峰命名策略,直接调用内置的转换器就能让Field值和序列化后的对象属性名完全匹配,无需自己编写转换逻辑。
代码实现示例
- 获取内置驼峰命名策略
using System.Text.Json; // 调用官方默认的驼峰转换规则 var camelCasePolicy = JsonNamingPolicy.CamelCase; // 测试转换效果 string testField1 = "IDTabella"; string testField2 = "IDDTUltimoCommission"; string result1 = camelCasePolicy.ConvertName(testField1); // 输出: idTabella string result2 = camelCasePolicy.ConvertName(testField2); // 输出: idDtUltimoCommission
- 在EF Core查询时转换字段
在返回给前端的DTO映射中,直接对数据库取出的Field值做转换:
public class AgGridColumnDto { public string Field { get; set; } public string HeaderName { get; set; } public int? Width { get; set; } // 其他网格列属性 } // 查询时投影转换 var gridData = await _context.TB_AGGrid_Definitions .Include(d => d.Columns) .Select(def => new { def.Id, def.GridName, Columns = def.Columns.Select(col => new AgGridColumnDto { Field = JsonNamingPolicy.CamelCase.ConvertName(col.Field), HeaderName = col.HeaderName, Width = col.Width }).ToList() }) .FirstOrDefaultAsync(d => d.Id == gridId);
若使用Newtonsoft.Json的适配方案
如果项目用的是Json.NET而非System.Text.Json,则用对应的命名策略:
using Newtonsoft.Json.Serialization; var camelCaseStrategy = new CamelCaseNamingStrategy(); string convertedField = camelCaseStrategy.GetPropertyName("IDTabella", false);
这种方式完全复用官方序列化的转换逻辑,能精准处理连续大写前缀、缩写等特殊场景,确保AGGrid的field值和前端接收的小驼峰属性完全匹配。
内容的提问来源于stack exchange,提问作者Andrea Moretti
相关产品推荐
相关产品推荐

