.NET中修改模型属性名后读取JSON配置映射失败的问题
问题原因
你用的[JsonPropertyName]是System.Text.Json序列化库的特性,而.NET配置系统的IConfiguration.Get<T>()绑定逻辑并不识别这个特性,所以配置里的min_value无法映射到MinValue属性,最终属性取默认值0。
解决办法
改用配置绑定专用的[ConfigurationKeyName]特性(.NET Core 3.0及以上版本支持),它是专门用来指定配置键与类属性的映射关系的:
using Microsoft.Extensions.Configuration; // 需要引入这个命名空间 public class Settings { [ConfigurationKeyName("min_value")] public int MinValue { get; set; } }
如果你的项目使用旧版.NET(比如.NET Framework)或依赖Newtonsoft.Json(Json.NET),也可以用[JsonProperty]特性适配:
using Newtonsoft.Json; public class Settings { [JsonProperty("min_value")] public int MinValue { get; set; } }
补充说明
配置系统的绑定逻辑默认支持属性名称的大小写不敏感匹配,但当下划线命名的配置键(min_value)对应帕斯卡命名的属性(MinValue)时,默认的自动转换规则不生效,必须通过特性明确指定映射关系才能完成绑定。
内容的提问来源于stack exchange,提问作者dafie
相关产品推荐
相关产品推荐

