.NET 6中Enum字符串序列化不符合预期问题排查
枚举序列化首字母小写异常的原因分析
全局命名策略覆盖局部转换器设置
若项目中全局配置了CamelCaseNamingStrategy(比如Json.NET的全局配置),该全局策略优先级高于单个字段或枚举类型上的StringEnumConverter特性。全局驼峰命名策略会自动将枚举值转为首字母小写格式,即便指定了字符串枚举转换器也会被覆盖。特性使用方式错误
你在字段上标注的[JsonProperty(ItemConverterType = typeof(StringEnumConverter))]属于误用:ItemConverterType是用来指定集合类型中元素的转换器(例如List<LeadType>这类字段),单个枚举字段应直接用[JsonConverter(typeof(StringEnumConverter))]标注,原配置等于未给单个枚举字段正确指定转换器,导致序列化时采用默认命名规则。Json序列化库混用导致特性失效
注意StringEnumConverter属于Newtonsoft.Json(Json.NET),而JsonStringEnumConverter属于System.Text.Json。若项目同时引入两个库,或实际使用的序列化库与标注特性所属库不匹配,会导致特性失效。比如枚举上标注了System.Text.Json的JsonStringEnumConverter,但实际用Newtonsoft.Json序列化,该特性就不会生效,序列化会遵循默认规则。
内容的提问来源于stack exchange,提问作者user007
相关产品推荐
相关产品推荐

