You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

System.Text.Json反序列化时属性大小写不匹配引发的映射问题

问题解决方法

你遇到的是System.Text.Json默认严格匹配属性名大小写导致的反序列化失败问题,有以下几种可行方案:

方案1:反序列化时开启属性名大小写不敏感(最便捷)

无需修改DTO定义和接口逻辑,仅需在反序列化时传入配置参数即可:

var tt = JsonSerializer.Deserialize<AuditReviewerDelegationDto>(responseContent, new JsonSerializerOptions
{
    PropertyNameCaseInsensitive = true
});

开启该配置后,反序列化器会自动匹配大小写不一致的属性名。

方案2:为DTO属性显式绑定JSON字段名

如果不需要全局开启大小写不敏感,可单独为DTO的每个属性指定对应的JSON小写字段名:

public class AuditReviewerDelegationDto
{
    [JsonPropertyName("delegationId")]
    public int DelegationId { get; set; }
    [JsonPropertyName("delegateUserName")]
    public string DelegateUserName { get; set; }
    // 其余属性按照同样规则配置即可
}

方案3:接口侧调整返回值命名格式

如果该接口是你自行维护的ASP.NET Core项目,可修改全局JSON序列化配置,让接口直接返回大写开头的帕斯卡命名格式属性,和你的DTO定义完全匹配:

// Program.cs中添加配置
builder.Services.AddControllers()
    .AddJsonOptions(options =>
    {
        // 关闭默认驼峰命名策略,使用属性原生名称返回
        options.JsonSerializerOptions.PropertyNamingPolicy = null;
    });

额外优化提示:你的现有代码中GetAsync后使用.Result获取响应属于同步阻塞调用,在异步方法中存在死锁风险,建议修改为异步等待:

var response = await LocalHttpClient.GetAsync(BaseAddress + "api/AuditReviewerDelegation/GetDelegation/" + mdmUserIdentifier);

内容的提问来源于stack exchange,提问作者bilpor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 11:27:03