JSON转C#类时List反序列化报错,请求排查解决
JSON反序列化失败的原因与解决方法
问题根源
你的JSON数据里的字段location是小写开头,但C#实体类Urls中对应的属性是Location(大写开头)。默认情况下System.Text.Json序列化器严格区分大小写,导致字段无法匹配,从而触发反序列化错误。
两种可行的解决办法
方法1:给属性标记JSON字段名
在C#类的Location属性上添加JsonPropertyName特性,明确指定对应的JSON字段名:
using System.Text.Json.Serialization; namespace Models { public partial class Urls { public string Urltitle { get; set; } [JsonPropertyName("location")] public string Location { get; set; } public string Url { get; set; } } }
方法2:配置序列化器忽略大小写
修改JsonOptions,设置属性名称不区分大小写,这样序列化器会自动匹配大小写不同的字段:
var JsonOptions = new JsonSerializerOptions { PropertyNameCaseInsensitive = true }; IList<Urls> ssdResponse = JsonSerializer.Deserialize<IList<Urls>>(content, JsonOptions);
这种方式不需要修改实体类,适合多个字段存在大小写差异的场景。
另外还要确认你的反序列化代码中,泛型参数T的实际类型确实是Models.Urls,避免因泛型类型传错导致的问题。
内容的提问来源于stack exchange,提问作者enavuio
相关产品推荐
相关产品推荐

